ساخت آرایه و دسترسی به عناصر آن

مقدمه

تا اینجا با متغیرهایی کار کردیم که هرکدام فقط یک مقدار نگه می‌داشتند. اما در عمل، اغلب نیاز داریم مجموعه‌ای از مقادیر مرتبط را در کنار هم نگه‌داری کنیم؛ مثلاً لیستی از نام‌ها یا لیستی از نمرات. برای این منظور از آرایه (Array) استفاده می‌کنیم.

ساخت یک آرایه

رایج‌ترین روش ساخت آرایه، استفاده از علامت [] است:

let fruits = ["سیب", "موز", "پرتقال"];
let numbers = [10, 20, 30, 40];
let mixed = ["علی", 25, true]; // آرایه می‌تواند انواع مختلف داده را همزمان نگه دارد

همان‌طور که در مثال آخر می‌بینید، برخلاف بسیاری از زبان‌های دیگر، یک آرایه در جاوااسکریپت لازم نیست فقط از یک نوع داده تشکیل شده باشد.

دسترسی به عناصر با اندیس (Index)

هر عنصر آرایه یک شماره‌ی ترتیبی دارد که به آن Index می‌گویند و از عدد 0 شروع می‌شود:

دسترسی به عناصر آرایه با Index
خروجی کنسول اینجا نمایش داده می‌شود...

تحلیل کد

نکته‌ی مهم اینجاست که اولین عنصر آرایه در اندیس 0 قرار دارد، نه 1. به همین دلیل، اگر آرایه‌ای سه عنصر داشته باشد، آخرین اندیس معتبر آن 2 خواهد بود. تلاش برای دسترسی به اندیسی که وجود ندارد (مثل fruits[3]) خطا نمی‌دهد، بلکه مقدار undefined برمی‌گرداند.

خاصیت length

برای دانستن تعداد عناصر یک آرایه، از length استفاده می‌کنیم:

let fruits = ["سیب", "موز", "پرتقال"];
console.log(fruits.length); // 3

یک نکته‌ی کاربردی: چون اندیس‌ها از 0 شروع می‌شوند، آخرین عنصر آرایه همیشه در اندیس length - 1 قرار دارد:

console.log(fruits[fruits.length - 1]); // پرتقال — آخرین عنصر

تغییر مقدار یک عنصر

می‌توان مقدار یک عنصر موجود را با ارجاع به اندیس آن تغییر داد:

let fruits = ["سیب", "موز", "پرتقال"];
fruits[1] = "گیلاس";
console.log(fruits); // ["سیب", "گیلاس", "پرتقال"]

افزودن عنصر با اندیس خارج از محدوده

اگر مقداری را به اندیسی بزرگ‌تر از length فعلی آرایه نسبت دهیم، جاوااسکریپت آرایه را بزرگ‌تر می‌کند و فاصله‌ی بین آن‌ها را با empty پر می‌کند:

نسبت‌دهی به اندیس خارج از محدوده
خروجی کنسول اینجا نمایش داده می‌شود...

تحلیل رفتار جاوااسکریپت

در این مثال، آرایه از دو عنصر به شش عنصر (اندیس ۰ تا ۵) گسترش پیدا می‌کند، اما اندیس‌های ۲ تا ۴ مقداری ندارند و به‌عنوان جای خالی (empty) نمایش داده می‌شوند. این حالت معمولاً نشانه‌ی یک اشتباه در کد است و بهتر است از متدهای استاندارد افزودن عنصر (که در درس بعدی می‌بینیم) استفاده شود، نه نسبت‌دهی مستقیم به اندیس‌های دلخواه.

آرایه‌ی تودرتو (Nested Array)

عناصر یک آرایه می‌توانند خودشان آرایه‌ی دیگری باشند:

let matrix = [
  [1, 2],
  [3, 4]
];

console.log(matrix[0]);    // [1, 2]
console.log(matrix[0][1]); // 2 — عنصر دوم از آرایه‌ی اول

برای دسترسی به عناصر آرایه‌ی تودرتو، به‌سادگی از چند اندیس پشت سر هم استفاده می‌کنیم.

Best Practices

  • همیشه از length برای بررسی تعداد عناصر استفاده کنید، نه شمارش دستی.
  • از نسبت‌دهی مستقیم به اندیس‌های خارج از محدوده‌ی فعلی آرایه خودداری کنید؛ برای افزودن عنصر از متدهای استاندارد آرایه استفاده کنید.

ارتباط با سایر مفاهیم

در درس بعدی با متدهای پرکاربرد آرایه مثل push، pop و splice آشنا می‌شویم که روش‌های استاندارد و امن‌تری برای افزودن، حذف و تغییر عناصر آرایه ارائه می‌دهند.

جمع‌بندی

آرایه مجموعه‌ای ترتیبی از مقادیر است که با اندیس‌هایی از 0 شروع می‌شوند، قابل دسترسی هستند. خاصیت length تعداد عناصر آرایه را برمی‌گرداند و آخرین عنصر همیشه در اندیس length - 1 قرار دارد. نسبت‌دهی به اندیسی خارج از محدوده‌ی فعلی، آرایه را با جاهای خالی گسترش می‌دهد که معمولاً باید از آن اجتناب کرد.