التكرار على المصفوفة
في songs ثلاثة عناوين هي rain وtide وdusk، والعدد مقفل طوال هذه الصفحة لأن forEach زيارة فقط وليس تكبيرًا أو تصغيرًا كما في الدرس السابق.
الطول لا يتحرك
هذا المشي نداء على المصفوفة ويمكن أن يعطيك الفهرس أيضًا، بخلاف for...of الذي يمر على القيمة وحدها. لا يُلحق عنوان في الآخر ولا يُحذف عنوان من القائمة.
الدالة التي تسلمها
تمرر دالة تعمل مرة لكل أغنية، والبطاقة في الأسفل هي عقد هذه الصفحة.
📊 ماذا يعطيك forEach
| القطعة | متى تصلك | ليست |
|---|---|---|
| الوسيط الأول | في كل زيارة | الطول |
| الوسيط الثاني | فقط إن سمّيته | إلزاميًا |
| نتيجة النداء | حين ينتهي forEach |
مصفوفة جديدة |
length بعده |
حين تقرأ songs.length |
متغيرًا بسبب الزيارة |
الأغنية هي الوسيط الأول والفهرس هو الوسيط الثاني، ولك أن تتركه بلا كتابة.
الترتيب في الطرفية
اطبع كل عنوان. المتوقع أولًا rain ثم tide ثم dusk.
let songs = ["rain", "tide", "dusk"];
songs.forEach(function (title) {
console.log(title);
});
تظهر ثلاثة أسطر وتمشي من أول المصفوفة إلى آخرها. السلاسل الثلاث ما زالت في الخانات نفسها.
let songs = ["rain", "tide", "dusk"];
songs.forEach(function (title, i) {
console.log(i);
console.log(title);
});
الصفر لـ rain والاثنان لـ dusk، وtide بينهما على الواحد.
let songs = ["rain", "tide", "dusk"];
let result = songs.forEach(function (title) {
console.log(title);
});
console.log(result);
console.log(songs.length);
احفظ النداء في متغير واطبعه لترى undefined، وهو ليس عنوانًا ولا طولًا. طباعة length تبقى 3.
let songs = ["rain", "tide", "dusk"];
songs.forEach(function (title) {
if (title === "tide") {
return;
}
console.log(title);
});
إن كان العنوان tide ورجعت في الحال، لا يُطبع ذلك السطر. المشي لا يتوقف وdusk ما زال يظهر.
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، لكنك أنت من عدّ الزيارات ولم يُرجع النداء هذا المجموع.
العناوين في الفقرة
ابنِ سلسلة فيها فراغ بين العناوين وضعها في الفقرة. أبقِ الطول خارج السطر.
<!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 ثم حدّثت تتغير الكلمة الوسطى. الزيارة ما زالت تغطي ثلاثة عناوين.
جرّب المشي
- اطبع العناوين الثلاثة. تأكد أن
rainهو الأول - اطبع كل فهرس وتأكد أن
rainعلى 0 - احفظ نتيجة النداء وشاهد
undefinedبينما يبقى الطول 3 - ارجع فورًا عند
tideوتأكد أنduskما زال يُطبع - زِد
seenبواحد في كل زيارة وتأكد أنه صار 3 - اقرأ سطر الصفحة، حوّل
tideإلىfog، ثم حدّث
قراءات تُخطئ
- لا تتوقع أن يعيد النداء آخر عنوان. العائد ليس أغنية
- لا تتوقع أن يعيد النداء الطول
- لا تكتب
breakداخل الدالة لأنه خطأ في الصياغة - لا تظن أن
returnبعدtideيمنعdusk - لا تقرأ الوسيط الثاني على أنه العنوان
- لا تبحث عن قيمة في هذه الصفحة
خذ معك هذا
forEachيزور كل عنصر من الأول إلى الأخير والوسيط الأول هو العنصر نفسه- الوسيط الثاني هو الفهرس
- نتيجة النداء نفسه هي
undefined returnداخل الدالة يتخطى تلك الزيارة فقط- الصفحة التالية تبحث حسب القيمة
🧠 اختبر معرفتك
اختبر معرفتك
تحدى نفسك مع هذا الاختبار التفاعلي واكتشف مدى فهمك للموضوع
📝 التعليمات
- اقرأ كل سؤال بعناية
- اختر أفضل إجابة لكل سؤال
- يمكنك إعادة الاختبار عدة مرات كما تريد
- سيتم عرض تقدمك في الأعلى