-
المساهمات
19744 -
تاريخ الانضمام
-
تاريخ آخر زيارة
-
عدد الأيام التي تصدر بها
472
نوع المحتوى
ريادة الأعمال
البرمجة
التصميم
DevOps
التسويق والمبيعات
العمل الحر
البرامج والتطبيقات
آخر التحديثات
قصص نجاح
أسئلة وأجوبة
كتب
دورات
كل منشورات العضو Mustafa Suleiman
-
شهادة CCNP تفتح لك أبواباً كثيرة في مجال الشبكات وهي مُعتمدة عالميًا بالتالي ستساعدك بالتأكيد في الحصول على وظيفة جيدة، لكن الجمع بينها وبين الخبرة العملية، حتى لو بسيطة في البداية، سيزيد من فرصك بشكل كبير، خاصًة بدون شهادة جامعية. لكن ابدأ بـ CCNA لأنّ CCNP شهادة متقدمة، بينما CCNA هي الأساس، ومعظم الشركات تتوقع أن يكون تمتلك CCNA أولاً، وستجعل دراسة CCNP أسهل بكثير. وأثناء دراستك لـ CCNA ثم CCNP، يجب أن تقضي وقتًا مساويًا إن لم يكن أكثر في التطبيق العملي في المعامل الافتراضية Virtual Labs وهي برامج تحاكي عمل أجهزة الشبكات الحقيقية من راوترات، سويتشات، جدران نارية، وخلافه ولكن على جهاز الكمبيوتر الخاص بك. أي بدلاً من شراء أجهزة باهظة الثمن، تستطيع إنشاء شبكات كاملة واختبارها وضبط إعداداتها افتراضيًا، وكبداية أثناء دراستك لـ CCNA قم بتحميل برنامج Cisco Packet Tracer، ثم عند دراسة CCNP قم بتحميل وتثبيت EVE-NG. وأنشيء ملف مشاريع بتوثيق تصميمات الشبكات المعقدة التي قمت ببنائها في GNS3 أو EVE-NG، والمشكلات التي واجهتك وكيف حللتها. ولا تتوقف عن التعلم فمجال الشبكات يتطور باستمرار، وأيضًا لتمييز نفسك عن الآخرين، وكن واقعيًا في توقعاتك للوظيفة الأولى، فلامشكلة أن لا تبدأ كمهندس شبكات مباشرة بالراتب الذي تحلم به، ابحث عن وظائف مثل: فني شبكات Network Technician مهندس دعم فني للشبكات Network Support Engineer مسؤول شبكات مبتدئ Junior Network Administrator مقالات وشروحات حول قسم الشبكات في علم الحاسوب.
-
ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم أسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
- 2 اجابة
-
- 1
-
-
لا يجب عليك ذلك، فكلاهما يقومان بنفس المهمة وهي بناء واجهة مستخدم من خلال المكونات وإدارة الحالة state للتطبيق، ستجد أنّ Angular مُستخدمة في الشركات الكبيرة أكثر، لأنّ Angular هو إطار عمل Framework وليس مكتبة مثل React، بالتالي هو يفرض هيكلية واضحة للمشروع وبه وأدوات أخرى مدمجة ويعتمد على TypeScript بشكل صارم. عدا ذلك ستجد React هي الأكثر استخدامًا والأكثر شهرة. الإختيار يعتمد على متطلبات سوق العمل، ابحث على LinkedIn وIndeed وتفقد المهارات المطلوبة بالنسبة للتخصص الذي اخترته، أي لو اخترت أن تكون front-end developer ابحث عن ذلك.
-
تقصد المسارات داخل الدورة؟ بالطبع هي مُرتبة بشكل مُمنهج حيث عليك دراستها بالترتيب كما هي، حيث المسارات تعتمد على بعضها البعض. أم أنك تقصد دراسة دورة معينة قبل دورة أخرى؟ مثل دورة علوم الحاسوب؟ من المفترض أن تبدأ بتلك الدورة قبل أي دورة أخرى لكونها دورة تأسيسية في مجال البرمجة.
- 2 اجابة
-
- 1
-
-
تحسن ممتاز واصل بنفس المجهود وستجد الأمر أصبح أسهل فأسهل، ولا تنزعج في حال واجهت أمر صعب أو مشكلة، حاول القيام بمشروع آخر والأفضل أن تكون فكرة تحاول تنفيذها أنت حتى لو جزء منها، المهم المحاولة والتعلم أثناء ذلك، وستجد دافع للتعلم بسبب أنك تحاول تنفيذ فكرة مشروع تريدها. في حال ليس ببالك فكرة معينة، قم بتنفيذ تطبيق لوصفات الطعام، بحيث يستطيع المستخدمين إضافة وصفاتهم الخاصة (اسم الوصفة، المكونات، طريقة التحضير، صورة اختيارية)، وعرض قائمة بالوصفات، وعند النقر على وصفة، يتم عرض تفاصيلها. ومن خلاله ستتمكن من التدرب على التعامل مع النماذج forms بشكل أكبر، وعرض البيانات بشكل ديناميكي، والتعامل مع تحميل الصور لو أردت إضافة تلك الميزة. بعد تنفيذه حتى لو أكثر من مرة لحين الشعور بأنك تفهمت المنطق الخاص به، وتستطيع البحث على اليوتيوب ستجد شروحات لمثل تلك الفكرة. انتقل بعده إلى استيعاب مفهوم الـ API، استخدم ذلك المشاريع بجلب بيانات من مصدر خارجي عن طريق API ثم عرض تلك البيانات في التطبيق. ستحتاج إلى مشاهدة التالي: ثم قم بتوظيف ذلك في المشروع الذي قمت به بتحسينه بجلب مواقيت الصلاة وعرضها تبعًا للدولة التي يختارها المستخدم من القائمة المنسدلة مثلاً، أو تستطيع الحصول على موقع المستخدم من خلال جافاسكريبت.
-
المشكلة إذن في الحساب البنكي هل قمت بتقديم حساب لشخص آخر؟، المطلوب ورقة بها ما يلي: اسم صاحب الحساب ويجب أن يطابق ما في حسابك. رقم الحساب المصرفي الذي وضعته في بايونير. شعار البنك. اسم البنك. تاريخ إصدار كشف الحساب لا يزيد عن 3 أشهر سابقة. كل ما سبق يجب أن يُطابق البيانات في حسابك. ويجب تصوير نسخة حقيقية لذلك وليس إرسال نسخة مطبوعة، مع إظهار الـ 4 حواف للورقة بشكل واضح في الصورة والتصوير في إضاءة جيدة. ونصحيتي إليك تجنب استخدام ذلك البنك، تفقد جنسية صاحبه أو مؤسسه، يوجد بنوك إلكترونية أخرى أفضل.
-
الفكرة هي تحويل الوقت من صيغة 24 ساعة إلى صيغة 12 ساعة مع إضافة "AM" أو "PM" وذلك من خلال دالة بداخلها المنطق لتنفيذ ذلك واسمها formatingTimes تستطيع استدعائها متى تريد. بها معامل باسم times تستقبل قيمة له وهي الوقت الذي تريد تحويله، وفي حال لم يتم إدخال وقت أي قيمة times فارغة أو null أو undefined، فستعيد "00:00" كقيمة افتراضية. عند استقبال الوقت وليكن مثلاً "14:30" فيتم تقسيمه عند علامة : باستخدام split(":")، فيصبح لديك مصفوفتين، الساعات hours والدقائق minutes. ثم يحول القيمتين إلى أرقام باستخدام map(Number)، لأن split تُعيد نصوص. ولو الساعات أكبر من أو تساوي 12، يتم تعيين "PM" للمتغير perd، والعكس لو أقل من 12، يتم تعيين "AM". ويتم التحويل من خلال عامل باقي القسمة % حيث يتم قسمة الساعات على 12 لتحويل الساعات إلى صيغة 12 ساعة، أي لو الساعة 14 فباقي قسمة 14 % 12 = 2. وفي حال الساعات تساوي 0 وذلك عند منتصف الليل، يتم تحويلها إلى 12 باستخدام || 12 حيث عامل || يعني أو في البرمجة لأن 0 تعني false لذا يتم تعيين القيمة الأخرى بعد || وهي 12 لأنها true وذلك يسمى Short circuiting في جافاكسريبت. ثم تنسيق الدقائق في template literals أو قالب النص في النهاية، كالتالي في حال الدقائق minutes أقل من 10، يتم إضافة صفر قبله مثل 05 بدلاً من 5، حيث يوجد شرط ثلاثي Ternary Operator. minutes < 10 ? "0" + minutes : minutes
-
قم بتثبيت أداة Support Tool من الرابط التالي وبعد الإنتهاء من التثبيت سيتم فتح نافذة لحذف Microsoft Office ثم اتبع الخطوات: https://outlookdiagnostics.azureedge.net/sarasetup/SetupProd_OffScrub.exe في حال استمرت المشكلة قم بتحميل أداة OfficeScrubber من الرابط التالي: https://github.com/abbodi1406/BatUtil/tree/master/OfficeScrubber وأرفقتها لك في المرفقات للتسهيل، بعد فك الضغط ستجد ملف باسم OfficeScrubber.cmd اضغط عليه بزر الفأرة الأيمن ثم اختر run as administrator وسيتم تفقد نسخة Microsoft Office المثبتة تلقائيًا والبدء في الحذف. BatUtil-OfficeScrubber.rar
-
تستطيع الاشتراك بالدورات لا مشكلة، سنك مناسب لتعلم البرمجة، ستحتاج إلى دراسة دورة علوم الحاسوب في حال لا يوجد لديك أي خبرة سابقة بالبرمجة، لكن بشرط القدرة على استخدام الحاسوب بشكل جيد وطالما لديك حاسوب ولابتوب فذلك متوفر لديك. الدورة الأخرى التي تستطيع الإشتراك بها يتوقف على ما تريده، أُرشح لك دورة بايثون أو جافاسكريبت. حاليًا يوجد عرض دورتين بسعر دورة واحدة، ستجد تفصيل هنا: https://academy.hsoub.com/offers/double-skills-2025/ وهنا صفحة الدورات تستطيع تفقدها للإختيار من بينها: https://academy.hsoub.com/store/c1-دورات-تعليمية/ والمقال التالي سيُفيدك:
-
js هي صيغة ملفات جافاسكريبت كما تعلم، بالتالي نستخدمها لكتابة أكواد جافاسكريبت فقط، بينما jsx هي صيغة خاصة بمكتبة React، حيث يتم الدمج بين كود جافاسكريبت وكود HTML أيضًا كالتالي: import React from 'react'; function Welcome() { const name = "علي"; return <h1>مرحبًا {name}</h1>; } export default Welcome; لاحظ ملف JSX يحتوي على عنصر <h1> مع تعبير JavaScript داخل الأقواس {} وذلك هو الـ syntax الخاص بملفات jsx في React. وما سبق هو الأفضل والمنطقي، لكن تستطيع استخدام أي صيغة تريدها في مشاريع React أي تستطيع كتابة JSX في ملفات .js وسيعمل بشكل جيد بفضل Babel الذي يعمل على تحويل الكود، وذلك عند إنشاء المشروع من خلال react-scripts. أما من خلال vite فيجب استخدام jsx لمكونات React وإلا سيحدث خطأ.
-
بخصوص التاريخ، فمن خلال كائن Date في جافاسكريبت كالتالي: <span id="date"></span> <script> function updateDate() { const today = new Date(); document.getElementById('date').textContent = today.toLocaleDateString(); } updateDate(); setInterval(updateDate, 24 * 60 * 60 * 1000); </script> الفكرة هنا في السطر: setInterval(updateDate, 24 * 60 * 60 * 1000); حيث استخدمت دالة setInterval وحددت لها مدة 24 ساعة لتشغيل دالة updateDate. حاول تنفيذ ذلك في مشروع React لكي تحقق استفادة. أما مواقيت الصلاة، ستحتاج إلى API خاص بأوقات الصلاة، ويتوفر التالي: https://aladhan.com/prayer-times-api بالطبع ستحتاج إلى قراءة المستند الخاص به وكيفية استخدامه من هنا: https://aladhan.com/prayer-times-api#get-/timingsByCity/-date- مثال عند جلب مواقيت الصلات لمدينة القاهرة في دولة مصر بتاريخ اليوم: https://api.aladhan.com/v1/timingsByCity/24-05-2025?city=cairo&country=egypt&method=8 حاول القيام بذلك بنفسك، لو واجهت صعوبة أخبرني.
-
لا تقلق بخصوص تلك النقطة، تستطيع التقدم للإختبار أكثر من مرة لحين إجتيازه والحصول على الشهادة، لكن الأفضل الاستعداد له جيدًا وعدم التسرع في خوضه، وذلك حفاظًا على وقتك ومجهودك، فالأمر يستغرق وقت بلا شك. آلية الإختبار هي كالتالي: بعد إنهاء 4 مسارات من الدورة على الأقل، أو الدورة بالكامل عليك رفع المشاريع التي قمت بها بالدورة على حسابك في github، ثم التحدث لمركز المساعدة وإخبارهم أنك تريد التقدم للإختبار وتوفير روابط المشاريع على github. ثم الإنتظار لبعض الوقت لحين مراجعة المشاريع وسيتم الرد عليك، وتحديد موعد لإجراء مقابلة، وبها يتم: إجراء محادثة صوتيّة لمدة 30 دقيقة يطرح المدرّب عليك أسئلة متعلّقة بالدورة والأمور التي نفّذتها خلالها. يحدد لك المدرّب مشروعًا مرتبطًا بما قمت به أثناء الدورة لتنفيذه خلال فترة محددة تتراوح بين أسبوع إلى أسبوعين. إجراء محادثة صوتيّة أخرى لمدّة 30 دقيقة يناقش بها مشروعك وما نفذته وتطرح أسئلة خلالها. إن سارت على جميع الخطوات السابقة بشكل صحيح، تحصل على الشهادة أو يرشدك المدرّب لأماكن القصور ويطلب منك تداركها ثم التواصل معنا من جديد.
-
المشكلة في مكون Prayer حيث قمت بتعريفه كالتالي: export default function Prayer(name, time) { } لكن في React، يجب أن تستقبل المكونات معامل واحد وهو props وليس معاملين، بالتالي عند استدعائك <Prayer /> بدون تمرير أي خصائص، تكون القيم غير معرفة، ويؤدي ذلك إلى مشاكل في العرض. يجب وضع الخصائص بين { } في حال أردت استقبالهم مباشرًة بدلاً من كتابة props، وذلك يسمى object destruction في جافاسكريبت، وذلك لتفكيك كائن props الخاص بالمكون: export default function Prayer({ name, time }) { } ثم في ملف App.jsx يجب تمريرهم كالتالي: <Prayer name="الفجر" time="04:00" />
-
vite هو أداة تحزيم bundler للمشاريع، لكنها حديثة وسريعة وحاليًا يتم استخدامها في أغلب المشاريع، بينما في الدورة قمنا بإنشاء مشروع React عن طريق react-scripts والتي تستخدم في الخلفية webpack وهو أداة تحزيم أيضًا لكنها أقدم من vite وأقل استخدامًا حاليًا. في الوقت الحالي تم الإنتقال إلى vite حيث أنّ react-scripts لم يُعد يتم تطويرها، من خلال vite يتم إنشاء المشروع بكل سهولة وأيضًا عملية التطوير سريعة من خلالها. لذا لا اختلاف فيما تم شرحه بخصوص React، الفكرة في طريقة إنشاء وتهيئة المشروع فقط والعملية بسيطة، لو واجهت مشكلة أخبرني.
-
height من الاسم تعني تحديد إرتفاع العنصر، أي بتحديد قيمة ثابتة سيكون ذلك هو الارتفاع النهائي للعنصر بغض النظر عن محتواه أو العوامل الأخرى، ما لم يتم تجاوزه بواسطة خصائص أخرى مثل max-height أو المحتوى الزائد مع overflow. بالتالي لو المحتوى أكبر من الارتفاع المحدد، فسيتسبب ذلك في التدفق الزائد overflow إن لم يتم التعامل معه بتحديد تنسيق overflow: auto له. div { height: 100px; } لاحظ العنصر سيكون دائمًا بارتفاع 100 بكسل، حتى لو كان المحتوى أصغر أو أكبر. بينما min-height يحدد الحد الأدنى لارتفاع العنصر، أي يسمح للعنصر بأن يكون أطول من القيمة المحددة إذا تطلب المحتوى ذلك، لكنه لن يكون أقصر من القيمة المحددة. نستفيد من ذلك بضمان أن العنصر لن يصبح أصغر من ارتفاع معين لكي لا يتشوه التصميم أو يحدث مشكلة في عرض المحتوى، ولكن متاح له أن يتوسع لو المحتوى يحتاج إلى مساحة أكبر. div { min-height: 100px; } وبالطبع تستطيع توظيف height وmin-height معًا، حيث يتأكد min-height من أن الارتفاع لا يقل عن قيمة معينة، بينما height يحدد الارتفاع الافتراضي. وفي حال قيمة min-height أكبر، فخاصية min-height ستتغلب على height.
-
خاص بالقائمة المنسدلة، أي القائمة التي تختار منها خيار واحد أو أكثر من خيار حسب ما تحدده أنت، وستجد أنها مستخدمة في النماذج أي في عنصر form. ولإضافة الخيارات داخله ستحتاج إلى العنصر <option> حيث كل <option> يمثل خيار في القائمة، كالتالي: <select name="colors" id="colorSelect"> <option value="red">أحمر</option> <option value="blue">أزرق</option> <option value="green">أخضر</option> </select> حيث name="colors" هو اسم الحقل الذي سيتم إرساله مع النموذج إلى الخادم في الواجهة الخلفية، و id="colorSelect" هو مُعرف للعنصرفي حال أردت تنسيقه أو استهدافه من قبل جافاسكريبت. وكل <option> يحتوي على value وهي القيمة التي تُرسل إلى الخادم عند اختيار الخيار ، والنص هو الذي يراه المستخدم مثل أحمر. وللعلم في حال لم يتم تحديد value في <option>، يتم إرسال النص الموجود بين الوسمين كقيمة.
-
ستحتاج إلى كتابة منطق جافاسكريبت كالتالي: let mainProductImage = document.getElementById('mainImage'); let pageContainer = document.querySelector('.container'); function phones(phoneSrc){ mainProductImage.src = phoneSrc; } function colors(color){ pageContainer.style.background = color; } وعليك تعيين id باسم mainImage للصورة التي سيتم تغييرها بالصور الأخرى: <div class="img"> <img id="mainImage" src="https://placehold.co/600x400?text=Hello+World" alt="Main Product Image"> </div> الفكرة هي اختيار عنصر الصورة الرئيسية باستخدام getElementById وتخزينه في متغير mainProductImage، كذلك اختيار عنصر الحاوية باستخدام querySelector وتخزينه في متغير pageContainer. والدالة phones تستقبل مصدر صورة مصغرة كمعامل وتعينه كمصدر للصورة الرئيسية. والدالة colors تستقبل أيضًا لون الخلفية كمعامل وتعمل على تغيير لون الخلفية عند الضغط على كل صورة.
-
تقصد التطبيق بمفردك مرة أخرى؟ عامًة الأفضل إعادة التمرين بمفردك، فعملية التعلم عملية تكرارية وتدريجية، فلن تتمكن من تنفيذ مشروع كامل دونّ التدرج من خلال تلك التمارين البسيطة. وأثناء التطبيق مع الشرح لا يكون ذهنك حاضر بنسبة كبيرة، بينما أثناء تنفيذه بمفردك يتم التركيز على الكود والخطوات بنسبة أكبر وتتثبت المعلومات أكثر ويظهر لك نقاط الضعف وما أنت بحاجة إلى مراجعته. ستجد تفصيل هنا:
-
لا أفضل من الواقعية والصراحة لكي لا تُصاب بالإحباط عند مواجهة أرض الواقع، تحتاج على الأقل ما بين 6 أشهر أو سنة لكي تتعلم تخصص معين في البرمجة مثل الواجهة الأمامية أو الخلفية أو كلاهما معًا. HTM, CSS, JS هي لغات الويب الأساسية لكن غير كافية للعمل على مشاريع حقيقية، نعم توجد مشاريع بسيطة على مواقع العمل الحر العربية تتطلب تلك اللغات فقط، لكن المنافسة عليها عالية فالجميع يتعلم تلك اللغات عند تعلم البرمجة في الغالب. ما الفرق بينك وبين الآخرين إذن؟ تحتاج إلى تمييز نفسك بتعلم كامل التقنيات اللازمة للواجهة الأمامية، أي تعلم React بجانبهم والمكتبات التي حولها فهي لا تعمل بمفردها بل بحاجة إلى مكتبات أخرى في المشاريع الحقيقية، والتي ستتعرف عليها في دورة جافاسكريبت. والأمر ليس بتلك الصعوبة، طالما تعلمت React الباقي يسير. ثم ستحتاج إلى تعلم Next.js وهو إطار عمل مبني على React ولا جدال حول ضرورة تعلمه حاليًا فنحن في 2025، حيث أنك تتعلم React لكي تتعلم Next.js ستجد تفصيل أكثر هنا:
- 4 اجابة
-
- 1
-
-
الطريقة الصحيحة لتعلم React هي بتعلم جافاسكريبت والتعمق بها، لديك مشكلة في استيعاب دوال المصفوفات لأنك لم تقم بتجربتها جميعًا أو قراءة شرح لها على الأقل، فتلك من أساسيات اللغة، لذا يجب أولاً الإهتمام باللغة البرمجية نفسها المبنية عليها React من الأساس، ستحتاج إلى تنفيذ مشاريع جافاسكريبت بسيطة ابحث على اليوتيوب عن مشاريع جافاسكريبت للمبتدئين. لو واجهت صعوبة قم بمراجعة أساسيات جافاسكريبت من الدورة مجددًا، أو من أي مصدر تريد. وبخصوص التطبيق بمفردك في حال قمت بذلك واستوعبت الأمر فعلاً، فستكون تعلمت جزء كبير من الأساسيات الخاصة بـ React وأيضًا جافاسكريبت ولكن ليس كامل React بالطبع فهي ليست مكتبة بسيطة. بعد الإنتهاء من التطبيق مع الشرح، أرجو إعادة تنفيذ المشروع من جديد بمفردك، ولا مشكلة في الرجوع للدروس لمراجعة بعض الأمور بعد المحاولة بنفسك أو لتفقد الكود لرؤية هل ما قمت به صحيح أم لا لتجنب تراكم الأخطاء وتركها للنهاية. الفكرة هي تحفيز ذاكرتك على استرجاع المعلومات وأيضًا تفقد مدى استيعابك لما تم شرحه وما قمت به، وكذلك إجبار عقلك على التركيز لأنك تقوم بالمشروع بنفسك، حيث لا يكون ذهنك حاضر بنسبة كبيرة عند التطبيق مع الشرح. ستجد تفصيل هنا: ولكن الأفضل تنفيذ مشروع بسيط آخر بواسطة React فمشروع واحد ليس كافٍ، ابحث على اليوتيوب عن "مشروع React للمبتدئين" وستجد الكثير لكن اختر مشروع بسيط، ستجد مشروع مواقيت صلاة جيد وبسيط، ثم تنفيذ مشروع آخر معقد قليلاً فقط عنه.
-
الأفضل فصل حساب الإحصائيات، وذلك ما يجب فعله عند التعامل مع بيانات تدريب واختبار، عليك أولاً حساب الإحصائيات من بيانات التدريب فقط. ثم تعريف الدالة التي تستقبل الإحصائيات وبالطبع بها عليك العمل على نسخة من البيانات لتجنب تعديل البيانات الأصلية بشكل غير متوقع، وبداخلها أيضًا تُحدد الأعمدة التي تريد مِلأها. ثم تطبيق الدالة على بيانات التدريب: age_mean_train = train_data['Age'].mean() embarked_mode_train = train_data['Embarked'].mode()[0] def fill_missing_values_ml(data, age_fill, embarked_fill, deck_fill='F'): data_filled = data.copy() fill_values = { 'Age': age_fill, 'Embarked': embarked_fill, 'Deck': deck_fill } cols_to_fill = [col for col in fill_values.keys() if col in data_filled.columns] for col in cols_to_fill: data_filled[col].fillna(fill_values[col], inplace=True) return data_filled train_data_processed = fill_missing_values_ml(train_data, age_mean_train, embarked_mode_train, deck_fill='F') ولاحظ تحديد [0] لأن mode() تعيد أكثر من قيمة لو تساوت التكرارات.
- 2 اجابة
-
- 1
-
-
كلاهما من الدوال الخاصة بالمصفوفات في جافاسكريبت، splice لتعديل المصفوفة الأصلية مباشرةً عن طريق إضافة، حذف، أو استبدال عناصر فيها. أي تقوم بتغيير المصفوفة الأصلية، لاحظ التالي: let fruits = ['تفاح', 'موز', 'برتقال', 'مانجو']; fruits.splice(1, 1); console.log(fruits); هنا قمت بحذف عنصر واحد فقط بدءًا من الـ index رقم 1 في المصفوفة، ثم حددت عدد العناصر التي أريد حذفها وهي عنصر 1 فقط. لذا النتيجة: ['تفاح', 'برتقال', 'مانجو'] أما filter لإنشاء مصفوفة جديدة تحتوي فقط على العناصر التي تستوفي شرط معين، ولا تقوم بالتغيير في المصفوفة الأصلية، بل تعيد مصفوفة جديدة تحتوي على العناصر التي اجتازت الشرط. let fruits = ['تفاح', 'موز', 'برتقال', 'مانجو']; let filteredFruits = fruits.filter(fruit => fruit !== 'موز'); console.log(filteredFruits); //المصفوفة التي فلترتها console.log(fruits);//المصفوفة الأصلية قمت بحذف موز من المصفوفة، قم بتجربة تشغيل الكود ولاحظ الفرق بين المصفوفة التي فلترتها والمصفوفة الأصلية والتي لم تتغير. ستجد تفصيل هنا أرجو قراءته بتمعن:
-
ستجد أسفل فيديو الدرس في نهاية الصفحة صندوق تعليقات كما هنا، أرجو طرح الأسئلة أسفل الدرس وليس هنا في قسم أسئلة البرمجة حيث نطرح الأسئلة العامة الغير متعلقة بمحتوى الدورة أو الدرس، وذلك لمساعدتك بشكل أفضل.
