آر

آرایه در JavaScript

49 تمرین

درباره‌ی آرایه

در 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

متد push() یک یا چند عنصر را به انتهای آرایه اضافه می‌کند و طول جدید آرایه را برمی‌گرداند.2

const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.push('Jill'); // => 5
names;
// => ['Jack', 'Laura', 'Paul', 'Megan', 'Jill']

pop

متد pop() آخرین عنصر را از آرایه حذف می‌کند و همان عنصر را برمی‌گرداند. این متد طول آرایه را تغییر می‌دهد.3

const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.pop(); // => 'Megan'
names;
// => ['Jack', 'Laura', 'Paul']

shift

متد shift() اولین عنصر را از آرایه حذف می‌کند و همان عنصر حذف‌شده را برمی‌گرداند. این متد طول آرایه را تغییر می‌دهد.4

const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.shift(); // => 'Jack'
names;
// => ['Laura', 'Paul', 'Megan']

unshift

متد unshift() یک یا چند عنصر را به ابتدای آرایه اضافه می‌کند و طول جدید آرایه را برمی‌گرداند.5

const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.unshift('Jill'); // => 5
names;
// => ['Jill', 'Jack', 'Laura', 'Paul', 'Megan']

splice

متد splice() محتوای یک آرایه را با حذف یا جایگزینی عنصرهای موجود و/یا افزودن عنصرهای جدید به‌صورت درجا تغییر می‌دهد. این متد آرایه‌ای شامل عنصرهای حذف‌شده را برمی‌گرداند.1

const names = ['Jack', 'Laura', 'Paul', 'Megan'];
names.splice(2, 1, 'Jill'); // => ['Paul']
names;
// => ['Jack', 'Laura', 'Jill', 'Megan']

  1. splice، MDN. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice (مراجعه در ۲۹ سپتامبر ۲۰۲۱) ↩

  2. push، MDN. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push (مراجعه در ۲۹ سپتامبر ۲۰۲۱) ↩

  3. pop، MDN. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/pop (مراجعه در ۲۹ سپتامبر ۲۰۲۱) ↩

  4. shift، MDN. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/shift (مراجعه در ۲۹ سپتامبر ۲۰۲۱) ↩

  5. unshift، MDN. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/unshift (مراجعه در ۲۹ سپتامبر ۲۰۲۱) ↩

ویرایش از طریق GitHub این پیوند در پنجره یا زبانه‌ی جدیدی باز می‌شود

آرایه را یاد بگیرید