مقدمه
آرایه (Array) یکی از پرکاربردترین ساختارهای داده در جاوااسکریپت و تمام زبانهای برنامهنویسی
مدرن است. با آرایهها میتوانید مجموعهای از دادهها را با یک نام نگهداری و به هر خانه با یک
شماره اندیس (Index) دسترسی پیدا کنید. در این درس، با مفهوم آرایه، نحوه ساخت و ویژگیهای کلیدی آن
آشنا میشویم.
ساخت آرایهها در جاوااسکریپت
در جاوااسکریپت، آرایهها نوعی شیء (Object) هستند که برای نگهداری مجموعهای از دادهها بهصورت
مرتب و پشت سر هم طراحی شدهاند. عناصر آرایه میتوانند دادههایی از هر نوع را نگه دارند
و دسترسی به این دادهها از طریق اندیس عناصر ممکن است.
در این بخش، دو روش اصلی برای ساخت آرایه را بررسی
میکنیم.
تعریف آرایه با براکت []
متداولترین و سادهترین روش برای ساخت آرایه، استفاده از علامت براکت [] است. کافیست عناصر
دلخواه را داخل براکت و با کاما از هم جدا کنید. آرایهها میتوانند هر نوع دادهای (عدد، رشته، شیء
و حتی آرایه دیگر) را در خود نگه دارند.
این روش بسیار خوانا و سریع است و در پروژههای واقعی، بیشتر مواقع از همین روش استفاده میشود.
JAVASCRIPT
let numbers = [1, 2, 3, 4];
let colors = ["red", "green", "blue"];
let mixed = [1, "hello", true, {name: "Ali"}];
console.log(mixed[3].name);
در کد بالا آرایهها با استفاده از براکت ساخته شدهاند. توجه کنید که عناصر آرایه میتوانند از هر نوع دادهای باشند، حتی آرایه یا شیء. برای دسترسی به هر عنصر، کافی است اندیس آن را در براکت بنویسید؛ مثلاً mixed[3].name
مقدار "Ali"
را برمیگرداند.
تعریف آرایه با سازنده Array
میتوانید با استفاده از سازنده Array نیز آرایه بسازید، اما این روش اغلب فقط زمانی بهکار
میرود که بخواهید آرایهای با طول مشخص اما خانههای خالی داشته باشید. این روش کمتر در کدهای
معمولی دیده میشود.
JAVASCRIPT
let arr1 = new Array(5);
let arr2 = new Array("a", "b", "c");
ویژگیهای آرایه
آرایهها در جاوااسکریپت ویژگیها و رفتارهای خاصی دارند که آنها را از سایر اشیاء متمایز میکند.
در این بخش، به بررسی مهمترین ویژگیهای آرایه میپردازیم.
اندیس و ترتیب عناصر
هر مقدار در آرایه با یک شماره اندیس (index) مشخص میشود که از صفر شروع میشود. این یعنی اولین
خانه آرایه اندیس صفر، دومین خانه اندیس یک و به همین ترتیب تا انتها.
برای دسترسی به هر عنصر کافی است نام آرایه و اندیس مورد نظر را در براکت بنویسید. همچنین آرایهها
طول متغیر دارند و میتوانید هر زمان عناصر جدید اضافه یا حذف کنید.
JAVASCRIPT
console.log(colors[0]);
colors[2] = "blue-green";
پراپرتی length
آرایهها یک پراپرتی length دارند که تعداد عناصر آرایه را نشان میدهد. این ویژگی بسیار
کاربردی است و برای حلقهها و پیمایش آرایه استفاده میشود.
اگر به اندیسی بزرگتر از length-1 مقدار بدهید، طول آرایه به طور خودکار بزرگتر میشود و
خانههای خالی بین آن undefined خواهند بود. مثال زیر را ببینید.
JAVASCRIPT
let arr = [10, 20, 30];
console.log(arr.length);
arr[5] = 50;
console.log(arr.length);
تفاوت Array و Object
آرایهها از نظر ساختاری نوعی شیء هستند (typeof آنها object است)، اما برای نگهداری
دادههای مرتب و جدولی بهینهسازی شدهاند. هرچند میتوانید به آرایه پراپرتی جدید اضافه کنید، ولی
توصیه میشود فقط برای دادههای لیستی و پشت سر هم از آرایه استفاده شود.
اگر به آرایه پراپرتی جدید اضافه کنید، این پراپرتیها در پیمایش معمول آرایه دیده نمیشوند و
تاثیری بر ترتیب عناصر ندارند. برای دادههای کلیدی و پراپرتیمحور، از شیء (Object) استفاده کنید.
JAVASCRIPT
let arr = [1, 2];
arr.foo = "bar";
console.log(arr.foo);
console.log(arr[1]);
پیمایش آرایهها
دیدیم که برای دسترسی به هر عنصر آرایه، میتوانید از اندیسها استفاده کنید. اما در پروژههای
واقعی، معمولاً
نیاز دارید تا همه عناصر آرایه را پیمایش کنید. در این بخش، چند روش متداول برای پیمایش آرایهها را
بررسی میکنیم.
حلقه for کلاسیک
متداولترین روش برای پیمایش آرایه، استفاده از حلقه for کلاسیک است. این روش انعطافپذیری
بالایی دارد و کنترل کاملی روی اندیسها به شما میدهد.
JAVASCRIPT
for (let i = 0; i < numbers.length; i++) {
console.log(numbers[i]);
}
حلقه for...of
با استفاده از حلقه for...of (از ES6 به بعد)، میتوانید هر عنصر آرایه را به راحتی پیمایش
کنید. این روش سادهتر و خواناتر است، مخصوصاً زمانی که فقط به مقدار عناصر نیاز دارید و کاری به
اندیس عناصر نداریم.
JAVASCRIPT
for (let color of colors) {
console.log(color);
}
آرایهها ساختار پایهای برای نگهداری لیست دادهها در جاوااسکریپت هستند. یادگیری نحوه ساخت،
ویژگیها و تفاوت آرایه با شیء، به شما کمک میکند برنامههایی قدرتمندتر و حرفهایتر بنویسید. در
درس بعد، با متدهای آرایهها و ابزارهای حرفهای برای مدیریت دادههای لیستی آشنا خواهید شد.