جاري التحميل...

التكرار على المصفوفة

في songs ثلاثة عناوين هي rain وtide وdusk، والعدد مقفل طوال هذه الصفحة لأن forEach زيارة فقط وليس تكبيرًا أو تصغيرًا كما في الدرس السابق.

الطول لا يتحرك

هذا المشي نداء على المصفوفة ويمكن أن يعطيك الفهرس أيضًا، بخلاف for...of الذي يمر على القيمة وحدها. لا يُلحق عنوان في الآخر ولا يُحذف عنوان من القائمة.

الدالة التي تسلمها

تمرر دالة تعمل مرة لكل أغنية، والبطاقة في الأسفل هي عقد هذه الصفحة.

📊 ماذا يعطيك forEach

القطعة متى تصلك ليست
الوسيط الأول في كل زيارة الطول
الوسيط الثاني فقط إن سمّيته إلزاميًا
نتيجة النداء حين ينتهي forEach مصفوفة جديدة
length بعده حين تقرأ songs.length متغيرًا بسبب الزيارة

الأغنية هي الوسيط الأول والفهرس هو الوسيط الثاني، ولك أن تتركه بلا كتابة.

الترتيب في الطرفية

اطبع كل عنوان. المتوقع أولًا rain ثم tide ثم dusk.

اطبع كل عنوان

javascript
let songs = ["rain", "tide", "dusk"];
songs.forEach(function (title) {
console.log(title);
});

تظهر ثلاثة أسطر وتمشي من أول المصفوفة إلى آخرها. السلاسل الثلاث ما زالت في الخانات نفسها.

الفهرس بجانب العنوان

javascript
let songs = ["rain", "tide", "dusk"];
songs.forEach(function (title, i) {
console.log(i);
console.log(title);
});

الصفر لـ rain والاثنان لـ dusk، وtide بينهما على الواحد.

النداء يعيد undefined

javascript
let songs = ["rain", "tide", "dusk"];
let result = songs.forEach(function (title) {
console.log(title);
});
console.log(result);
console.log(songs.length);

احفظ النداء في متغير واطبعه لترى undefined، وهو ليس عنوانًا ولا طولًا. طباعة length تبقى 3.

return لا يوقف المشي

javascript
let songs = ["rain", "tide", "dusk"];
songs.forEach(function (title) {
if (title === "tide") {
return;
}
console.log(title);
});

إن كان العنوان tide ورجعت في الحال، لا يُطبع ذلك السطر. المشي لا يتوقف وdusk ما زال يظهر.

عُدّ الزيارات بنفسك

javascript
let songs = ["rain", "tide", "dusk"];
let seen = 0;
songs.forEach(function (title) {
seen = seen + 1;
});
console.log(seen);
console.log(songs.length);

عدادك يستقر على 3 وlength أيضًا 3، لكنك أنت من عدّ الزيارات ولم يُرجع النداء هذا المجموع.

العناوين في الفقرة

ابنِ سلسلة فيها فراغ بين العناوين وضعها في الفقرة. أبقِ الطول خارج السطر.

عرض الصفحة — العناوين في سطر

html
<!DOCTYPE html>
<html>
<head>
<title>array-iteration — page</title>
</head>
<body>
<p id="line">…</p>
<script>
let songs = ["rain", "tide", "dusk"];
let line = "";
songs.forEach(function (title) {
if (line !== "") {
line = line + " ";
}
line = line + title;
});
let box = document.getElementById("line");
box.textContent = line;
</script>
</body>
</html>

السطر يعرض العناوين الثلاثة وبينها فراغ، وإن بدّلت tide إلى fog ثم حدّثت تتغير الكلمة الوسطى. الزيارة ما زالت تغطي ثلاثة عناوين.

جرّب المشي

  1. اطبع العناوين الثلاثة. تأكد أن rain هو الأول
  2. اطبع كل فهرس وتأكد أن rain على 0
  3. احفظ نتيجة النداء وشاهد undefined بينما يبقى الطول 3
  4. ارجع فورًا عند tide وتأكد أن dusk ما زال يُطبع
  5. زِد seen بواحد في كل زيارة وتأكد أنه صار 3
  6. اقرأ سطر الصفحة، حوّل tide إلى fog، ثم حدّث

قراءات تُخطئ

  • لا تتوقع أن يعيد النداء آخر عنوان. العائد ليس أغنية
  • لا تتوقع أن يعيد النداء الطول
  • لا تكتب break داخل الدالة لأنه خطأ في الصياغة
  • لا تظن أن return بعد tide يمنع dusk
  • لا تقرأ الوسيط الثاني على أنه العنوان
  • لا تبحث عن قيمة في هذه الصفحة

خذ معك هذا

  • forEach يزور كل عنصر من الأول إلى الأخير والوسيط الأول هو العنصر نفسه
  • الوسيط الثاني هو الفهرس
  • نتيجة النداء نفسه هي undefined
  • return داخل الدالة يتخطى تلك الزيارة فقط
  • الصفحة التالية تبحث حسب القيمة

🧠 اختبر معرفتك

جاهز للبدء

اختبر معرفتك

تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع

❓
8
الأسئلة
🎯
70%
للنجاح
♾️
∞
الوقت
🔄
∞
المحاولات

📝 التعليمات

  • اقرأ كل سؤال بعناية
  • اختر أفضل إجابة لكل سؤال
  • يمكنك إعادة الاختبار عدة مرات كما تريد
  • سيتم عرض تقدمك في الأعلى