پیمایش آرایه
فهرست songs سه عنوان rain و tide و dusk را نگه داشته و در تمام این صفحه تعدادشان قفل است، چون forEach فقط سر میزند و مثل درس قبل اندازه را کم و زیاد نمیکند.
اندازه تکان نمیخورد
این بار راه رفتن یک صدای متد است و اگر بخواهی اندیس را هم به تو میدهد، بر خلاف for...of که فقط مقدار را میآورد. هیچ عنوانی به ته نمیچسبد و هیچ عنوانی هم از فهرست کم نمیشود.
تابعی که میسپاری
تابعی به forEach میدهی تا برای هر آهنگ یک بار اجرا شود و کارت پایین قرارداد همین صفحه است.
📊 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 هنوز ۳ است.
let songs = ["rain", "tide", "dusk"];
songs.forEach(function (title) {
if (title === "tide") {
return;
}
console.log(title);
});
اگر عنوان tide باشد و همانجا return کنی، آن خط چاپ نمیشود. راه قطع نمیشود و dusk هنوز به کنسول میآید.
let songs = ["rain", "tide", "dusk"];
let seen = 0;
songs.forEach(function (title) {
seen = seen + 1;
});
console.log(seen);
console.log(songs.length);
شمارندهات روی ۳ میایستد و length هم ۳ است، ولی این جمع را خودت نگه داشتهای نه اینکه صدا برایت برگردانده باشد.
عنوانها داخل پاراگراف
بین عنوانها یک فاصله بگذار و همان رشته را در پاراگراف بنویس. طول را داخل خط نیاور.
<!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روی ۰ است - نتیجهٔ صدا را ذخیره کن و
undefinedرا ببین در حالی که طول ۳ میماند - روی
tideهمان لحظهreturnکن و ببینduskهنوز چاپ میشود - هر بازدید یکی به
seenاضافه کن و ببین ۳ شده - خط صفحه را بخوان،
tideراfogکن و تازه کن
خواندنهای غلط
- انتظار نداشته باش صدا آخرین عنوان را پس بدهد. برگشتی آهنگ نیست
- انتظار نداشته باش صدا طول را پس بدهد
- داخل تابع
breakننویس چون خطای نحوی است - گمان نکن
returnبعد ازtideجلویduskرا میگیرد - پارامتر دوم را عنوان حساب نکن
- در این صفحه سراغ جستوجوی مقدار نرو
با خودت ببر
forEachاز جلو تا عقب به هر قلم سر میزند و پارامتر اول خودِ قلم است- پارامتر دوم اندیس است
- نتیجهٔ خودِ صدا
undefinedاست returnداخل تابع فقط همان بازدید را رد میکند- صفحهٔ بعد بر اساس مقدار جستوجو میکند
🧠 دانش خود را بیازمایید
دانش خود را بیازمایید
خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کردهاید
📝 دستورالعملها
- هر سوال را با دقت بخوانید
- بهترین پاسخ را برای هر سوال انتخاب کنید
- میتوانید آزمون را هر چند بار که میخواهید تکرار کنید
- پیشرفت شما در بالا نمایش داده میشود