منابع آموزشی و پژوهشی، برای دانشگاه و مدرسه
پشتیبانیانتشار محتوا
CODEX/سطح ۱؛ آرایه و دادهjavascriptArray.prototype.forEach()

متد forEach در جاوااسکریپت

forEach در جاوااسکریپت برای انجام یک کار روی اعضای آرایه است. چاپ فهرست با شماره، خروجی undefined و فرق return در callback با توقف حلقه را ببینید.

مفهوم به زبان ساده

گاهی از اعضای آرایه خروجی تازه نمی‌سازیم و فقط می‌خواهیم برای هر عضو کاری انجام دهیم؛ مانند چاپ ردیف‌ها، ثبت یک گزارش یا ساخت عناصر صفحه. forEach تابعی را برای هر عضو موجود آرایه فراخوانی می‌کند. تابع می‌تواند مقدار عضو و اندیس آن را بگیرد. اندیس از صفر آغاز می‌شود، پس برای شمارهٔ نمایشی فهرست معمولاً یک واحد به آن اضافه می‌کنیم.

در مثال، عنوان سه درس را با شماره چاپ می‌کنیم. callback هیچ نتیجهٔ محاسباتی برای آرایهٔ تازه نمی‌سازد. نتیجهٔ خود forEach نیز undefined است؛ بنابراین نباید انتظار داشته باشیم متغیر result شامل فهرست تغییرکرده باشد. اگر می‌خواهید هر عنوان را به رشتهٔ شماره‌دار تبدیل کنید و آرایهٔ آن‌ها را نگه دارید، #map برای بیان این هدف مناسب‌تر است.

return در callback فقط همان فراخوانی callback را پایان می‌دهد و حلقهٔ forEach را متوقف نمی‌کند. break و continue هم در بدنهٔ این تابع مثل حلقهٔ معمولی به کار نمی‌روند. اگر به توقف زودهنگام نیاز دارید، #for-of یا یک روش جست‌وجوی مناسب را انتخاب کنید. همچنین forEach منتظر Promise برگردانده‌شده از callback نمی‌ماند؛ پس برای مراحل ناهمگام، آموختهٔ این مدخل را بی‌تغییر تعمیم ندهید. نمونهٔ فعلی کاملاً همگام و قابل اجرا در مرورگر و Node.js است.

کجا به کار می‌آید؟

  • انجام یک کار جانبی همگام برای هر عضو، مانند چاپ گزارش
  • پیمایش فهرست با دسترسی هم‌زمان به مقدار و اندیس

از تعریف تا یک مثال واقعی

javascript
const lessons = ['متغیر', 'شرط', 'تابع'];
const result = lessons.forEach((title, index) => {
  console.log(`${index + 1}. ${title}`);
});

console.log(result);
خروجی مورد انتظار
1. متغیر
2. شرط
3. تابع
undefined
کد را تغییر دهید و نتیجه را ببینید.

این مثال چطور کار می‌کند؟

  1. forEach عنوان هر درس و اندیس آن را به callback می‌دهد.

  2. برای شمارهٔ انسانی، یک واحد به اندیس صفرمبنا اضافه می‌کنیم.

  3. سه پیام به ترتیب اعضای آرایه چاپ می‌شوند.

  4. نتیجهٔ خود forEach برابر undefined است؛ result آرایه نیست.

اشتباه رایج

return از callback، forEach را نمی‌شکند. استفاده از callback با async نیز باعث نمی‌شود forEach منتظر پایان آن کارها بماند؛ ترتیب و انتظار ناهمگام را جدا طراحی کنید.

این را به خاطر بسپارید

برای «انجام کار برای هر عضو» از forEach استفاده کنید؛ برای «ساخت آرایهٔ نتیجه» معمولاً map را انتخاب کنید.

بازگشت به نقشهٔ مفاهیم
یکجا انتخاب کن، راحت‌تر دریافت کن

انتخاب‌های من ۰ منبع

مجموعهٔ مطالعه‌ات را بساز.

کنار مقاله‌ها «انتخاب» را بزنید تا چند فایل را با هم دریافت کنید.

انتخاب مقاله‌های رایگان