در JavaScript، آرایه ساختاری شبیه فهرست است که طول ثابتی ندارد و میتواند هر نوعی از مقدارهای اولیه یا شیءها، حتی انواع مخلوط، را در خود نگه دارد.
آرایه ویژگی length را دارد و همچنین متدهای مفید زیادی برای پیمایش و تغییر آرایه در اختیار میگذارد.
برای ساختن آرایه، عنصرها را بین کروشه [] قرار دهید.
برای خواندن از آرایه، اندیس را در کروشه [] بعد از شناسه بگذارید. اندیسهای آرایه از صفر شروع میشوند.
برای مثال:
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names[1];
// => Laura
آرایهها را میتوان با نحوهی نگارش سازنده هم ساخت، اما برای بیشتر کاربردها، همان نحوهی نگارش مستقیم آرایه توصیه میشود.
const names = new Array();
names.push('Jack', 'Laura', 'Paul', 'Megan');
names[1];
// => Laura
آرایهها نمیتوانند از strings بهعنوان اندیس عنصر استفاده کنند و باید از اعداد صحیح (number) استفاده کنند.
تنظیم یا دسترسی از طریق مقادیر غیرصحیح با نگارش کروشهای (یا نگارش نقطهای) هیچ عنصری را در فهرست خود آرایه تنظیم یا بازیابی نمیکند، بلکه متغیری را تنظیم یا میخواند که با مجموعهی ویژگیهای شیء آن آرایه مرتبط است.
ویژگیهای شیء آرایه و فهرست عنصرهای آرایه از هم جدا هستند و عملیاتهای پیمایش و تغییر آرایه را نمیتوان روی این ویژگیهای نامدار اعمال کرد.
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.length;
// => 4
// Properties can be set on arrays using bracket ['property'] or
// dot .property notation, and this will affect the length, as
// shown below.
names.magician = 'Elyse';
names.length;
// => 4
// The property shows up when logging the array, making it seem
// that the property is somehow incorporated in the array.
names;
// => ["Jack", "Laura", "Paul", "Megan", magician: "Elyse"]
// However, be aware. Properties added via non-numeric keys are
// NOT part of the array's internal list, and are not traversed
// or mutated when using one of the traversal or mutation
// operations.
names.forEach((name) => console.log(name));
// => Jack
// => Laura
// => Paul
// => Megan
آرایهها در JavaScript شیءهای معمولی هستند و میتوان عنصرها را با کلیدواژهی delete حذف کرد.
اما این کار طول آرایه را تغییر نمیدهد و حفرهای از empty به جا میگذارد.
در زبانهای دیگر، این وضعیت شبیه به آرایهی پراکنده است.
حفرههای empty هنگام استفاده از عملیاتهای پیمایش یا تغییر نادیده گرفته میشوند.
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
delete names[1];
names;
// => ["Jack", empty, "Paul", "Megan"]
names.length;
// => 4
names.forEach((name) => console.log(name));
// => Jack
// => Paul
// => Megan
اگر نباید حفرهای وجود داشته باشد و اگر length باید شمار عنصرهایی را نشان دهد که پیمایش یا تغییر داده میشوند، بهجای آن از splice استفاده کنید.
متد splice() محتوای یک آرایه را با حذف یا جایگزینی عنصرهای موجود و/یا افزودن عنصرهای جدید بهصورت درجا تغییر میدهد.1
برای مثال:
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.splice(1, 1);
names;
// => ["Jack", "Paul", "Megan"]
names.length;
// => 3
names.forEach((name) => console.log(name));
// => Jack
// => Paul
// => Megan
ویژگی length یک آرایه به فهرست عنصرهایی که آرایه نگه میدارد گره خورده است.
این ویژگی قابل تغییر است.
وقتی طول افزایش مییابد، حفرههای empty ایجاد میشود که هنگام پیمایش یا تغییر آرایه در نظر گرفته نمیشوند.
وقتی طول کاهش مییابد، عنصرهای انتهای آرایه را حذف میکند.
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.length = 6;
names;
// => ["Jack", "Laura", "Paul", "Megan", empty × 2]
names.length = 2;
// => ["Jack", "Laura"]
چون آرایهها objects هستند، typeof names نتیجهی "object" را میدهد.
برای بررسی اینکه چیزی آرایه است یا نه، از Array.isArray استفاده کنید:
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
typeof names;
// => "object"
Array.isArray(names);
// => true
const object = {};
Array.isArray(object);
// => false
ممکن است وسوسه شوید از names instanceof Array استفاده کنید. این کار میتواند جواب بدهد، اما نه در همهی شرایط.
برای اطلاعات بیشتر این مقاله را بخوانید.
برخی از متدها که روی هر شیء آرایه در دسترس هستند میتوانند برای افزودن یا حذف از آرایه استفاده شوند. در ادامه چند مورد از آنها را میبینید:
متد
push()یک یا چند عنصر را به انتهای آرایه اضافه میکند و طول جدید آرایه را برمیگرداند.2
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.push('Jill'); // => 5
names;
// => ['Jack', 'Laura', 'Paul', 'Megan', 'Jill']
متد
pop()آخرین عنصر را از آرایه حذف میکند و همان عنصر را برمیگرداند. این متد طول آرایه را تغییر میدهد.3
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.pop(); // => 'Megan'
names;
// => ['Jack', 'Laura', 'Paul']
متد
shift()اولین عنصر را از آرایه حذف میکند و همان عنصر حذفشده را برمیگرداند. این متد طول آرایه را تغییر میدهد.4
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.shift(); // => 'Jack'
names;
// => ['Laura', 'Paul', 'Megan']
متد unshift() یک یا چند عنصر را به ابتدای آرایه اضافه میکند و طول جدید آرایه را برمیگرداند.5
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.unshift('Jill'); // => 5
names;
// => ['Jill', 'Jack', 'Laura', 'Paul', 'Megan']
متد splice() محتوای یک آرایه را با حذف یا جایگزینی عنصرهای موجود و/یا افزودن عنصرهای جدید بهصورت درجا تغییر میدهد. این متد آرایهای شامل عنصرهای حذفشده را برمیگرداند.1
const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.splice(2, 1, 'Jill'); // => ['Paul']
names;
// => ['Jack', 'Laura', 'Jill', 'Megan']
splice، MDN. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice (مراجعه در ۲۹ سپتامبر ۲۰۲۱) ↩
push، MDN. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push (مراجعه در ۲۹ سپتامبر ۲۰۲۱) ↩
pop، MDN. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/pop (مراجعه در ۲۹ سپتامبر ۲۰۲۱) ↩
shift، MDN. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift (مراجعه در ۲۹ سپتامبر ۲۰۲۱) ↩
unshift، MDN. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift (مراجعه در ۲۹ سپتامبر ۲۰۲۱) ↩