آرایهها
نگهداری مجموعهای از مقادیر در یک متغیر با آرایه؛ دسترسی با اندیس، متدهای push و pop، پیمایش با for...of و تبدیل با map.
آنچه در این درس میآموزید
- آرایه بسازید و با اندیس به عناصر آن دسترسی داشته باشید
- عناصر را با push و pop اضافه و حذف کنید
- آرایه را با for...of پیمایش و با map تبدیل کنید
فهرست مطالب
تا اینجا هر متغیر یک مقدار داشت. اما برنامههای واقعی با مجموعهها سروکار دارند: فهرست خرید، نتایج یک آزمون، محصولات یک سبد. برای این کارها بهجای ساختن ده متغیر جدا، از «آرایه» (Array) استفاده میکنیم؛ آرایه چند مقدار را زیر یک نام و بهترتیب نگه میدارد.
ساخت آرایه و دسترسی به عناصر
const colors = ["Red", "Green", "Blue"];
console.log(colors.length);
console.log(colors[0]);
console.log(colors[2]);3 Red Blue
عناصر با ویرگول داخل براکت نوشته میشوند و ترتیبشان مهم است. دو نکتهٔ کلیدی:
- اندیس از صفر شروع میشود.
colors[0]عنصر نخست است وcolors[2]عنصر سوم؛ این نکته پرتکرارترین منبع خطای تازهکارهاست. lengthتعداد عناصر را میدهد. آخرین عنصر همیشهcolors[colors.length - 1]است.
اگر به جایگاهی برسید که وجود ندارد — مثل colors[10] در این آرایه — جاوااسکریپت خطا نمیدهد و مقدار undefined برمیگرداند.
افزودن و حذف با push و pop
آرایهها ابزارهای آمادهای برای تغییر دارند. دو متد پایه:
const tasks = ["Shopping", "Study"];
tasks.push("Exercise");
console.log(tasks.length);
tasks.pop();
console.log(tasks);3 [ 'Shopping', 'Study' ]
pushبه انتهای آرایه عنصر میافزاید؛ حالا سه کار داریم.popآخرین عنصر را حذف میکند و خودِ آن عنصر را برمیگرداند؛ فهرست به حالت اول بازگشت.
سایر متدهای پرکاربرد: shift عنصر اول را حذف میکند، unshift به ابتدا اضافه میکند و includes میگوید عنصری در آرایه هست یا نه.
پیمایش با for...of
برای گذر از روی همهٔ عناصر، حلقهٔ for...of مستقیمترین راه است؛ لازم نیست با اندیس و length درگیر شوید:
const scores = [12, 17, 9, 15];
let sum = 0;
for (const s of scores) {
sum += s;
}
console.log(sum);53
در هر دورِ حلقه، مقدار بعدی آرایه در s قرار میگیرد: اول ۱۲، بعد ۱۷ و همینطور تا آخر. ترکیب حلقهها با آرایهها یکی از پرسازدهترین الگوهای برنامهنویسی است.
تبدیل آرایه با map
نمونهٔ دیگری از «تابع بهعنوان مقدار» که در درس توابع دیدیم اینجاست: متد map روی هر عنصر تابعی را اجرا میکند و آرایهای تازه از نتایج میسازد؛ آرایهٔ اصلی دستنخورده میماند.
const numbers = [1, 2, 3, 4];
const doubled = numbers.map((n) => n * 2);
console.log(doubled);[ 2, 4, 6, 8 ]
تابع پیکانی (n) => n * 2 برای هر عنصر صدا زده شد: ۱ شد ۲، ۲ شد ۴ و به همین ترتیب. map فقط یکی از متدهای خانوادهٔ پیمایش است؛ filter عناصری را که تابع برایشان true برمیگرداند نگه میدارد و find اولین عنصر برابر شرط را میدهد.
تمرینها
تمرین
تمرین ۱ — بزرگترین عدد
آرایهٔ [8, 3, 15, 6] را در متغیری بگذارید و با یک حلقهٔ for...of بزرگترین عدد آن را پیدا و چاپ کنید. پیشنهاد: بزرگترین عدد را تا این لحظه در متغیری نگه دارید و با تکتک عناصر مقایسه کنید.
// Write your code hereنمایش راهحل
const numbers = [8, 3, 15, 6];
let max = numbers[0];
for (const n of numbers) {
if (n > max) {
max = n;
}
}
console.log(max);15
::: :::
خلاصه
- آرایه چند مقدار مرتب را زیر یک نام نگه میدارد و
lengthاندازهٔ آن را میدهد. - اندیسها از صفر شروع میشوند؛ دسترسی به جایگاه ناموجود
undefinedمیدهد، نه خطا. pushوpopاز انتهای آرایه اضافه و حذف میکنند و باconstهم مجازند.- حلقهٔ
for...ofاز روی عناصر میگذرد بدون آنکه با اندیس درگیر شوید. mapبا اجرای یک تابع روی تکتک عناصر، آرایهای تازه میسازد.
دادههای همگن را آرایه نگه میدارد؛ اما موجودیتهای چندبخشی مثل «یک کاربر» چه؟ در درس بعدی با اشیاء، دادههای ساختدار را مدل میکنیم.