Marwan Farouq نشر 6 مارس 2023 أرسل تقرير نشر 6 مارس 2023 السلام عليكم و رحمه الله لقد لاحظت ان for of loop تؤدي نفس وظيفه for each فتطرق الي ذهني ان اعرف الفارق بينهم و الاهم هي الحالات المختلفه لاستخدام كل منهما. 2 اقتباس
1 شرف الدين حفني نشر 6 مارس 2023 أرسل تقرير نشر 6 مارس 2023 ال for loop بوجه عام هي أعم من الfor each حيث أن ال for loop تُستخدم لتنفيذ برمجية معينة او مجموعة من الأوامر لعدد من المرات بغض النظر عن نوع البرمجية, بينما ال foreach تُستخدم لتنفيذ برمجية معينة على عناصر المصفوفة فهي حالة أخص من الfor loop وتُستخدم للتعامل مع المصفوفة وعمل iteration للعناصر أي أن ال foreach تكون أفضل في حالة التعامل مع المصفوفات بينما الfor loop هي حالة أعم على سبيل المثال الشفرة التالية من الأسهل تنفيذها بال for loop function get_factorial(n) { let result = n; for (let i =1; i < n; i++) result* = i; return result; } تلك الدالة تقوم بحساب الfactorial لرقم ما فإستخدمنا الfor loop بينما إن أردنا مثلًا المرور على عناصر مصفوفة ما وطباعة كل عنصر على حدا سيكون من الأسهل والمنطقي إستخدام ال foreach كما يظهر فالمثال التالي my_list = [1,2,3,4,5,6,7] my_list.forEach(e=>console.log(e)) اقتباس
0 Kais Hasan نشر 6 مارس 2023 أرسل تقرير نشر 6 مارس 2023 يمكنك استعمال for each عندما يكون لديك ما يدعى ب collection أو container أي مثل مجموعة من الأغراض مجموعين سوية. بينما for العادية يمكنك استعمالها في أي حالة تتضمن التكرار عدد من المرات. أي بشكل عام يمكنك اعتبار for each حالة خاصة من ال for. مثلاً لنفترض كنت تريد المرور على الأعداد من 1 إلى 100، لا فكرة أن تقوم بإنشاء مجموعة من الأعداد للمرور عليهم، يكفي أن تستعمل ال for العادية فهذا أفضل، بينما في حال كان لديك مصفوفة من الأغراض فقد يكون من الأسهل استعمال for each كما أن هذا يسهل قراءة الكود و يقلل الأخطاء التي قد تقع فيها نتيجة الوصول إلى خانة غير موجودة. اقتباس
0 عبدالباسط ابراهيم نشر 6 مارس 2023 أرسل تقرير نشر 6 مارس 2023 أوصي دائمًا باستخدام .for … of . إنه يعمل على أي تكرار إنه يدعم جميع أنواع التحكم في التدفق في جسم الحلقة ، مثل continue, break, return, yield و await. كما أجدها أكثر قابلية للقراءة ، لكن هذا يعود إلى التفضيل. يعتقد بعض الناس أن forEach هو أسلوب وظيفي أكثر ، لكن هذا خطأ - ليس له قيمة نتيجة ويتعلق كله بآثار جانبية ، لذا فإن الحلقة ذات المظهر الحتمي تناسب هذا الغرض بشكل أفضل. في الأداء ، for... of أسرع من forEach. يمكن العثور على النتائج هنا forEach تعتبر 24% أبطأ من for...of اقتباس
0 أحمد رضا5 نشر 6 مارس 2023 أرسل تقرير نشر 6 مارس 2023 في الحقيقة، الـ for...of loop و forEach() method تؤديان نفس الغرض العام، وهو تكرار عناصر مجموعة معينة والقيام بإجراء معين عليها. ومع ذلك، يوجد بعض الفروق الدقيقة بينهما: ترتيب التكرار: في for...of loop، يتم تكرار العناصر بالترتيب الذي تم إدخالها في المصفوفة أو في أي مجموعة أخرى تم تمريرها إلى الحلقة، بينما في forEach() method لا يوجد ترتيب محدد لتكرار العناصر. قابلية التحكم في الحلقة: يمنح لنا for...of loop القدرة على التحكم في عملية التكرار بطريقة أكبر من forEach() method، حيث يمكننا استخدام break أو continue لإيقاف الحلقة أو الانتقال إلى العنصر التالي على الرغم من أن ذلك غير ممكن في forEach(). القدرة على استخدام الـ return statement: يمكن استخدام الـ return statement في for...of loop لإيقاف الحلقة وإرجاع قيمة معينة، بينما لا يمكن استخدامه في forEach() method. العناصر الفارغة: يتجاهل forEach() method العناصر الفارغة (undefined) في المصفوفة، بينما يتضمن for...of loop تكرارها كأي عنصر آخر. يمكن استخدام for...of loop في حالات التحكم في الحلقة أو العمل مع ترتيب العناصر المحدد، في حين يمكن استخدام forEach() method في حالات التعامل مع العناصر دون الحاجة إلى التحكم في الحلقة. سأقدم لك بعض الأمثلة البسيطة لاستخدام كل من for...of loop و forEach() method لتوضيح الفرق بينهما: مثال على for...of loop: let names = ["Ali", "Ahmed", "Omar", "Fatima"]; for(let name of names) { console.log(name); } // Output: // Ali // Ahmed // Omar // Fatima في هذا المثال، تم استخدام for...of loop لتكرار جميع العناصر في مصفوفة الأسماء names وطباعتها. يتم تكرار العناصر في الترتيب الذي تم إدخاله في المصفوفة. مثال على forEach() method: let numbers = [1, 2, 3, 4]; numbers.forEach(function(number) { console.log(number); }); // Output: // 1 // 2 // 3 // 4 في هذا المثال، تم استخدام forEach() method لتكرار جميع الأرقام في مصفوفة numbers وطباعتها. يتم تكرار العناصر دون الحاجة إلى التحكم في الحلقة. يتم تجاهل العناصر الفارغة في المصفوفة. مثال على استخدام break مع for...of loop: let numbers = [1, 2, 3, 4]; for(let number of numbers) { if(number === 3) { break; } console.log(number); } // Output: // 1 // 2 في هذا المثال، تم استخدام for...of loop لتكرار جميع الأرقام في مصفوفة numbers وطباعتها، ولكن تم استخدام break لإيقاف الحلقة عندما يتم الوصول إلى الرقم 3. مثال على استخدام الـ return statement مع for...of loop: let numbers = [1, 2, 3, 4]; for(let number of numbers) { if(number === 3) { return "تم العثور على الرقم 3"; } console.log(number); } // Output: // 1 // 2 في هذا المثال، تم استخدام for...of loop لتكرار جميع الأرقام في مصفوفة numbers وطباعتها، ولكن تم استخدام الـ return statement لإيقاف الحلقة وإرجاع النص. اقتباس
0 Mustafa Suleiman نشر 6 مارس 2023 أرسل تقرير نشر 6 مارس 2023 المعلومات السابقة صحيحة وشاملة بشكل عام، ولكن هناك بعض النقاط الإضافية التي يمكن تذكرها: بينما يمكن استخدام for loop لأي نوع من الأشياء التي يمكن تكرارها، إلا أن foreach يستخدم عادةً لتكرار عناصر المصفوفة أو الكائنات القابلة للتكرار مثل سلاسل النصوص (strings) ومجموعات العناصر (sets) وغيرها. في حالة تغيير المحتوى الموجود في المصفوفة أثناء استخدام foreach، فلن يتم تحديثها بشكل صحيح، بينما يمكن استخدام for loop لتغيير قيم المصفوفة بشكل صحيح. يمكن استخدام for loop لعمل تكرارات غير متساوية، بمعنى أن يمكن استخدام تعليمة break و continue للخروج من التكرارات أو تخطي جزء منها، بينما لا يمكن استخدام هذه التعليمات في foreach. يمكن استخدام for loop لتكرار أرقام محددة من المرات وليس فقط عناصر في مصفوفة، بينما يتم استخدام foreach فقط لتكرار عناصر المصفوفة أو الكائنات القابلة للتكرار. في بعض الحالات، يمكن استخدام for-of loop بدلاً من foreach لتكرار عناصر المصفوفة أو الكائنات القابلة للتكرار. ولكن يتم استخدام for-of loop بشكل أساسي في ECMAScript 6 وما بعده، بينما foreach يدعمها أيضًا ECMAScript 5 والإصدارات السابقة. اقتباس
السؤال
Marwan Farouq
السلام عليكم و رحمه الله لقد لاحظت ان for of loop تؤدي نفس وظيفه for each فتطرق الي ذهني ان اعرف الفارق بينهم و الاهم هي الحالات المختلفه لاستخدام كل منهما.
5 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.