برنامه نویسی و طراحی سایت

متدهای آرایه در جاوا اسکریپت – هر آنچه باید بدانید + مثال و کد

متدهای آرایه در جاوا اسکریپت – هر آنچه باید بدانید + مثال و کد

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

فهرست مطالب این نوشته
آرایه در جاوا اسکریپت

چگونگی ایجاد آرایه در جاوا اسکریپت

نحوه محاسبه طول آرایه در جاوا اسکریپت چگونه است؟

طول آرایه‌ های متراکم

طول آرایه‌ های پراکنده

تغییر ویژگی طول آرایه جاوا اسکریپت

خالی کردن آرایه

حذف عناصر آرایه

ساختن آرایه پراکنده

حذف و اضافه کردن عناصر از آرایه

متد Push در جاوا اسکریپت

مثال متد Push در جاوا اسکریپت

متد unshift در جاوا اسکریپت

مثال هایی از متد unshift در جاوا اسکریپت

متد Pop در جاوا اسکریپت

مثال متد pop در جاوا اسکریپت

متد shift در جاوا اسکریپت

مثال متد shift در جاوا اسکریپت

متد splice برای آرایه در جاوا اسکریپت

حذف عناصر با متد splice

درج عناصر در آرایه با متد splice

جایگزینی عناصر با متد splice

متد slice در جاوا اسکریپت

شبیه سازی آرایه با متد slice

کپی کردن بخشی از آرایه با متد slice

تبدیل اشیا آرایه مانند به آرایه با متد slice

یافتن عناصر با متدهای آرایه در جاوا اسکریپت

متد indexOf در جاوا اسکریپت

مثال متد indexOf در جاوا اسکریپت

متد lastIndexOf در جاوا اسکریپت

متد includes در جاوا اسکریپت

متد Find در جاوا اسکریپت

Callback در متد Find

مقدار برگشتی در متد find

مثال متد find در جاوا اسکریپت

متد FindIndex در جاوا اسکریپت

مثال متد findIndex در جاوا اسکریپت

متدهای مرتبه بالای آرایه در جاوا اسکریپت

متد Map در جاوا اسکریپت

سینتکس متد map در جاوا اسکریپت

متد فیلتر برای آرایه در جاوا اسکریپت چیست؟

مثال متد فیلتر در جاوا اسکریپت

متد Reduce در جاوا اسکریپت

مثال متد Reduce در جاوا اسکریپت

متد ReduceRight در جاوا اسکریپت

متد Every در جاوا اسکریپت

مثال متد Every در جاوا اسکریپت

متد Some در جاوا اسکریپت

مثال متد Some در جاوا اسکریپت

متد Sort در جاوا اسکریپت

متد ForEach در جاوا اسکریپت

مثال متد ForEach در جاوا اسکریپت

متدهای دستکاری آرایه در جاوا اسکریپت

متد concat در جاوا اسکریپت

متدهای ایجاد آرایه در جاوا اسکریپت

متد Of در جاوا اسکریپت

مثال متد of در جاوا اسکریپت

متد From در جاوا اسکریپت

مثال متد From در جاوا اسکریپت

مسطح کردن آرایه ها با متدهای آرایه در جاوا اسکریپت

متد Flat در جاوا اسکریپت

متد FlatMap در جاوا اسکریپت

مثال متد FlatMap در جاوا اسکریپت

متدهای الحاق آرایه به رشته در جاوا اسکریپت

متد Join در جاوا اسکریپت

١. الحاق به کلاس های CSS

٢. جایگزین کردن فاصله‌ ها با خط تیره در رشته

متدهای آرایه در جاوا اسکریپت برای عملیات پیشرفته

متد Destructuring در جاوا اسکریپت

مثال متد Destructuring در جاوا اسکریپت

متد Spread Operator در جاوا اسکریپت

spread در آرایه ها

spread در آرگومان های تابع

spread در ایجاد آرایه

متدهای دسترسی به عناصر در جاوا اسکریپت

متد At در جاوا اسکریپت

مثال متد at در جاوا اسکریپت

متدهای آرایه چند بعدی در جاوا اسکریپت

متد Multidimensional Array در جاوا اسکریپت

افزودن عنصر به آرایه چند بعدی

حذف عناصر از آرایه چند بعدی

نادیده گرفتن عناصر آرایه چند بعدی

سخن پایانی

faradars mobile

آرایه در جاوا اسکریپت

آرایه را در زبان برنامه نویسی جاوا اسکریپت با مجموعه‌ای از براکت‌های مربعی «[ ]» نشان می‌دهند و هر عنصر داخل آرایه با کاما «،» از همدیگر جدا می‌شوند. ویژگی جالب توجه آرایه‌های جاوا اسکریپت، توانایی آن‌ها در قرار دادن عناصر از هر نوعی در داخل خود است، به این معنی که می‌توان آرایه را با «رشته‌ها» (استرینگ | String)، متغیرهای بولی، اعداد، «شی» (Object) و حتی آرایه‌های دیگر پر کرد.

آموزش جاوا اسکریپت JavaScript
فیلم آموزش جاوا اسکریپت JavaScript در تم آف

کلیک کنید

مثال زیر آرایه‌ای را نشان می‌دهد که ۴ عنصر مختلف عددی، بولی، رشته‌ای و شی را در بر گرفته است:

const mixedTypedArray = [100, true, 'blog.Faradars', {}];

در آرایه، هر «عنصر» (Element) با موقعیت منحصربه‌فرد خود شناسایی می‌شود که به آن «شاخص» (اندیس | Index) می‌گویند. اندیس در آرایه‌های جاوا اسکریپت از 0

 شروع می‌شود و برای هر عنصر بعدی یک واحد افزایش می‌یابد.

ساختار آرایه های جاوا اسکریپت

از این‌رو، در آرایه مربوطه در مثال فوق، اندیس 0

 عنصر 100

 را نگه می‌دارد. همچنین مقدار true

 در اندیس 1

  ، مقدار blog.Faradars

 در اندیس 2

 و مقدار {}

 (تهی) در اندیس 3

 قرار دارد. تعداد کل عناصر در آرایه برابر با طول آن است. به عنوان مثال، طول آرایه مثال فوق برابر با عدد ۴ خواهد بود. یکی از جنبه‌های جذاب آرایه‌های جاوا اسکریپت، طول انعطاف‌پذیر آن‌ها است. برخلاف آرایه‌های با طول ثابت، طول آرایه‌های جاوا اسکریپت را می‌توان در هر زمان با تنظیم نوعی مقدار عددی مثبت تغییر داد.

چگونگی ایجاد آرایه در جاوا اسکریپت

ساخت آرایه در جاوا اسکریپت از راه‌های مختلفی امکان‌پذیر است.

آموزش برنامه نویسی تایپ اسکریپت TypeScript در جاوا اسکریپت
فیلم آموزش برنامه نویسی تایپ اسکریپت TypeScript در جاوا اسکریپت در تم آف

کلیک کنید

ساده‌ترین روش، نسبت دادن مقدار آرایه به متغیر است که مثالی برای آن در ادامه آمده است.

const salad = ['1', 'b', 'c', '6', '@', '2', 'o'];

روش دیگر برای ساخت آرایه، می‌تواند استفاده از سازنده آرایه باشد که مثال زیر برای درک بهتر این موضوع ارائه شده است:

const salad = new Array('1', 'b', 'c', '6', '@', '2', 'o');

توجه به این نکته ضروری است که فراخوانی new Array(2)

 منجر به ایجاد آرایه‌ای با طول ٢ می‌شود، اما هیچ عنصری را از پیش تعریف نمی‌کند. برعکس، فراخوانی Array(1,2)

 آرایه‌ای دو عنصری حاوی 1

 و 2

ایجاد می‌کند. همچنین متدهای دیگری مانند Array.of()‎

 ، Array.from()‎

 و همچنین عملگر‎ spread (…)

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

نحوه محاسبه طول آرایه در جاوا اسکریپت چگونه است؟

ویژگی «length» یا طول آرایه عددی صحیح بدون علامت و ٣٢ بیتی محسوب می‌شود که همیشه از بالاترین اندیس آرایه یک واحد بیشتر است. این بدان معناست که آرایه می‌تواند تا «۴۲۹۴۹۶۷۲۹۶» عنصر را در خود جای دهد. عملکرد ویژگی length با انواع آرایه‌ها، مانند آرایه‌های متراکم و پراکنده متفاوت است.

آموزش JavaScript ES6 جاوا اسکریپت
فیلم آموزش JavaScript ES6 جاوا اسکریپت در تم آف

کلیک کنید

طول آرایه‌ های متراکم

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

 برای تعیین تعداد عناصر موجود استفاده کرد. مثال زیر برای درک بهتر این مفهوم ارائه شده است.

let colors = ['red', 'green', 'blue'];
console.log(colors.length); // Output: 3

در مثال بالا، ویژگی length

عدد ٣ را بازمی‌گرداند که معادل تعداد عناصر موجود در آرایه colors

 است. افزودن عنصری دیگر به آرایه colors

باعث تغییر طول آن می‌شود.

colors.push('yellow');
console.log(colors.length); // Output: 4

در نتیجه، ویژگی طول آرایه colors

در حال حاضر ۴ است.

طول آرایه‌ های پراکنده

آرایه پراکنده دارای عناصری با اندیس‌های  ناپیوسته هستند که از صفر شروع می‌شوند. به عنوان مثال، [10، ، 20، 30]

 نوعی آرایه پراکنده به‌حساب می‌آید، زیرا اندیس‌های عناصر آن 0

 ، 2

و 3

 هستند. در آرایه پراکنده، ویژگی length

تعداد واقعی عناصر را نشان نمی‌دهد، بلکه عددی را نشان می‌دهد که این عدد بالاتر از بالاترین اندیس آرایه است. مثال زیر برای این مفهوم ارائه شده است.

let numbers = [10, , 20, 30];
console.log(numbers.length); // Output: 4

در این حالت، آرایه اعداد شامل ۳ عنصر 10

 ، 20

  و 30

 می‌شود که بالاترین اندیس ٣ است. بنابراین، ویژگی length

عدد ۴ را بازمی‌گرداند. حال افزودن عنصری به آرایه اعداد در اندیس 10

به صورت زیر خواهد بود.

numbers[10] = 100;
console.log(numbers.length); // Output: 11

تغییر ویژگی طول آرایه جاوا اسکریپت

می‌توان مقدار ویژگی طول آرایه را در جاوا اسکریپت تغییر داد. این کار می‌تواند منجر به حذف عناصر از آرایه یا پراکندگی آرایه شود.

آموزش پروژه محور جاوا اسکریپت – پیاده سازی سبد خرید فروشگاهی با JavaScript
فیلم آموزش پروژه محور جاوا اسکریپت – پیاده سازی سبد خرید فروشگاهی با JavaScript در تم آف

کلیک کنید

خالی کردن آرایه

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

const fruits = ['Apple', 'Orange', 'Strawberry'];
fruits.length = 0;
console.log(fruits); // Output: []

حذف عناصر آرایه

اگر ویژگی length

آرایه به مقداری کمتر از بالاترین اندیس تنظیم شود، تمام عناصری که اندیس آن‌ها برابر یا بیشتر از طول جدید است، حذف می‌شوند. به عنوان مثال، با تغییر ویژگی طول آرایه fruits

 به ٢، عنصر سوم از آرایه حذف می‌شود.

const fruits = ['Apple', 'Orange', 'Strawberry'];
fruits.length = 2;
console.log(fruits); // Output: ['Apple', 'Orange']

ساختن آرایه پراکنده

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

const fruits = ['Apple', 'Orange', 'Strawberry'];
fruits.length = 5;

console.log(fruits); // [ 'Apple', 'Orange', 'Strawberry',  ]

حذف و اضافه کردن عناصر از آرایه

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

آموزش مقدماتی کتابخانه ReactJS در جاوا اسکریپت
فیلم آموزش مقدماتی کتابخانه ReactJS در جاوا اسکریپت در تم آف

کلیک کنید

متد Push در جاوا اسکریپت

متد ‎ push()

 در جاوا اسکریپت راهی برای اضافه کردن یک یا چند عنصر به انتهای آرایه محسوب می‌شود. پس از افزودن عناصر به آرایه با این متد، طول تابع تغییر می‌کند. «سینتکس» (Syntax) متد push()

به صورت زیر است:

push(newElement);
push(newElement1,newElement2);
push(newElement1,newElement2,...,newElementN);

مثال متد Push در جاوا اسکریپت

در ادامه چند مثال از متد push()

در جاوا اسکریپت برای درک بهتر این متد ارائه می‌شود.

١. اضافه کردن یک عنصر به آرایه

مثال زیر نحوه اضافه کردن عنصر 40

 به آرایه تعریف شده را نشان می‌دهد.

let numbers = [10, 20, 30];

const length = numbers.push(40);

console.log(length);
console.log(numbers);

خروجی به صورت زیر خواهد بود:

5
[ 10, 20, 30, 40, 50 ]

تصویر زیر نحوه انجام عملیات بالا را نشان می‌دهد:

مثال متد Push در جاوا اسکریپت

٢. اضافه کردن چند عنصر به آرایه با متد Push

مثال زیر نحوه اضافه کردن چند عنصر به آرایه تعریف شده را نشان می‌دهد.

let numbers = [10, 20, 30];

const length = numbers.push(40, 50);

console.log(length);
console.log(numbers);

خروجی کد بالا به صورت زیر است:

5
[ 10, 20, 30, 40, 50 ]

تصویر زیر هم نحوه انجام عملیات بالا را نشان می‌دهد:

آموزش متد Push در جاوا اسکریپت

٣. اضافه کردن عناصر آرایه به همدیگر در جاوا اسکریپت

یکی دیگر از کاربردهای متد push()

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

 و cmyk

 موجود هستند و کاربر می‌خواهد عناصر آرایه cmyk

را به آرایه colors

الصاق کند.

let colors = ['red', 'green', 'blue'];
let cmyk = ['cyan', 'magenta', 'yellow', 'back'];

برای الصاق یا اضافه کردن عناصر آرایه cmyk

به آرایه colors

می‌توان از حلقه for…of

 استفاده کرد که این حلقه عناصر آرایه cmyk

را پیمایش می‌کند و از متد push()

برای اضافه کردن هر عنصر به آرایه‌های colors

مانند زیر استفاده خواهد کرد:

let colors = ['red', 'green', 'blue'];
let cmyk = ['cyan', 'magenta', 'yellow', 'back'];

for (const color of cmyk) {
  colors.push(color);
}

console.log(colors);

خروجی کد بالا به صورت زیر خواهد بود:

['red', 'green', 'blue', 'cyan', 'magenta', 'yellow', 'back']

همچنین در «جاوا اسکریپت ES6»، می‌توان از عملگر spread (…)

 برای الصاق کردن عناصر آرایه cmyk

به آرایه colors

به صورت زیر استفاده کرد:

let colors = ['red', 'green', 'blue'];
let cmyk = ['cyan', 'magenta', 'yellow', 'back'];

colors.push(...cmyk);

console.log(colors);

۴. استفاده از متد push با اشیاء آرایه مانند

متد push()

در آرایه‌های جاوا اسکریپت نوعی متد همه‌کاره است. این یعنی می‌توان آن را با توابع call()

 یا application()

 روی اشیایی که شبیه به آرایه‌ها هستند استفاده کرد.

آموزش JavaScript ES6 جاوا اسکریپت
فیلم آموزش JavaScript ES6 جاوا اسکریپت در تم آف

کلیک کنید

متد push()

برای شناسایی مکان افزودن عناصر جدید به ویژگی length

 متکی است. اگر متد نتواند ویژگی length

را به مقدار عددی تبدیل کند، به طور پیش فرض از 0

 به عنوان مقدار اندیس استفاده می‌کند. مثال زیر نحوه استفاده از متد push()

را برای هدف گفته شده نشان می‌دهد:

let greetings = {
  0: 'Hi',
  1: 'Hello',
  length: 2,
  append(message) {
    [].push.call(this, message);
  },
};
greetings.append('Howdy');
greetings.append('Bonjour');

console.log(greetings);

خروجی کد بالا به صورت زیر است:

{
  '0': 'Hi',
  '1': 'Hello',
  '2': 'Howdy',
  '3': 'Bonjour',
  length: 4,
  add: [Function: add]
}

متد Push در جاوا اسکریپت بسیار کاربردی و تسلط به آن حائز اهمیت است.

مطلب پیشنهادی:

پیاده سازی پشته در جاوا اسکریپت — از صفر تا صد

شروع مطالعه

متد unshift در جاوا اسکریپت

یکی دیگر از متدهای آرایه در جاوا اسکریپت، متد unshift()

است. این متد یک یا چند عنصر را به ابتدای آرایه اضافه می‌کند و طول آرایه جدید را بازمی‌گرداند.

آموزش پروژه محور جاوا اسکریپت، CSS و HTML – طراحی صفحه فرود واکنشگرا
فیلم آموزش پروژه محور جاوا اسکریپت، CSS و HTML – طراحی صفحه فرود واکنشگرا در تم آف

کلیک کنید

سینتکس این متد به صورت زیر است:

unshift(element);
unshift(element1, element2);
unshift(element1, element2,...elementN);

متد unshift()

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

مثال هایی از متد unshift در جاوا اسکریپت

در ادامه چند مثال از متد unshift()

در جاوا اسکریپت برای درک بهتر این متد ارائه خواهد شد.

١. اضافه کردن یک عنصر به آرایه با متد unshift

در مثال زیر، از متد unshift()

برای اضافه کردن عدد 10

 به آرایه اعداد استفاده شده است:

let numbers = [30, 40];

const length = numbers.unshift(20);

console.log({ length });
console.log({ numbers });

خروجی به صورت زیر است:

{ length: 3 }
{ numbers: [ 20, 30, 40 ] }

تصویر زیر نحوه انجام عملیات بالا را با متد unshift()

نشان می‌دهد.

متد unshift در جاوا اسکریپت

٢. اضافه کردن چندین عنصر به آرایه با متد unshift

مثال زیر نحوه اضافه کردن چندین عنصر به آرایه با متد unshift()

را بیان می‌کند:

let numbers = [30, 40];

const length = numbers.unshift(10, 20);

console.log({ length });
console.log({ numbers });

خروجی به صورت زیر خواهد بود:

{ length: 4 }
{ numbers: [ 10, 20, 30, 40 ] }

تصویر زیر نحوه شکل گرفتن عملیات بالا را بیان می‌کند:

آموزش جاوا اسکریپت تم آف

درست مانند متد push()

می‌توان از متد unshift()

نیز برای اتصال دو آرایه در جاوا اسکریپت استفاده کرد، ولی با این تفاوت این بار عناصر آرایه اولی را به ابتدای عناصر آرایه دومی اضافه می‌کند. همچنین استفاده از متد unshift()

با اشیای آرایه مانند نیز امکان‌پذیر است.

متد Pop در جاوا اسکریپت

متد pop()‎

 برای حذف آخرین عنصر از آرایه استفاده می‌شود و عنصر حذف شده را بازمی‌گرداند.

آموزش برنامه نویسی تایپ اسکریپت TypeScript در جاوا اسکریپت
فیلم آموزش برنامه نویسی تایپ اسکریپت TypeScript در جاوا اسکریپت در تم آف

کلیک کنید

سینتکس متد pop()‎

به صورت زیر است:

array.pop()

متد pop()‎

خاصیت length

 آرایه را تغییر می‌دهد. اگر آرایه خالی باشد، فراخوانی متد pop()‎

مقدار «Undefined» (تعریف نشده) را بازمی‌گرداند.

مثال متد pop در جاوا اسکریپت

در ادامه چند مثال برای درک بهتر متد pop()‎

به عنوان یکی از مهم‌ترین متدهای آرایه در جاوا اسکریپت ارائه شده است.

آموزش تعریف توابع در جاوا اسکریپت (JavaScript) (رایگان)
فیلم آموزش تعریف توابع در جاوا اسکریپت (JavaScript) (رایگان) در تم آف

کلیک کنید

۱. حذف آخرین عنصر آرایه با متد pop

با مثال زیر می‌توان نحوه استفاده از متد pop()‎

برای حذف آخرین عنصر آرایه را بهتر درک کرد.

const numbers = [10, 20, 30];
const last = numbers.pop();

console.log(last); // 30
console.log(numbers.length); // 2
30
2

در مثال فوق، عنصر 30

 از آرایه حذف شده و طول آرایه به ٢ کاهش یافته است که تصویر زیر نحوه انجام عملیات صورت گرفته را نشان می‌دهد.

متد Pop در جاوا اسکریپت

٢. استفاده از متد pop با آرایه خالی

در مثال داده شده، متد pop()‎

روی آرایه‌ای خالی فراخوانی می‌شود. در چنین سناریویی، متد pop()‎

تعریف نشده برمی‌گردد و ویژگی length

آرایه صفر می‌شود.

const numbers = [];
const last = numbers.pop();

console.log(last);
console.log(numbers.length);

خروجی به صورت زیر خواهد بود:

undefined 
0

٣. استفاده از متد pop با اشیاء آرایه مانند

متد pop()‎

نیز به عنوان یکی از متدهای آرایه در جاوا اسکریپت، نوعی متد عمومی در نظر گرفته می‌شود و به کاربر امکان می‌دهد از متدهای call()

یا application()

برای فراخوانی آن بر روی اشیاء آرایه مانند استفاده کند. هنگامی که متد pop()‎

فراخوانی می‌شود، از ویژگی length

شی آرایه مانند برای تعیین و حذف آخرین عنصر استفاده می‌کند. مثال زیر مربوط به این موضوع است.

let greetings = {
  0: 'Hi',
  1: 'Hello',
  2: 'Howdy',
  length: 2,
  removeLast() {
    return [].pop.call(this);
  },
};

let greting = greetings.removeLast();

console.log(greting);
console.log(greetings);

خروجی کد بالا به صورت زیر خواهد بود.

'Howdy'

{
  '0': 'Hi',
  '1': 'Hello',
  length: 2,
  removeLast: [Function: removeLast]
}

متد shift در جاوا اسکریپت

متد shift()

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

به صورت زیر است:

array.shift()

اگر آرایه خالی باشد، فراخوانی shift()

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

خاصیت طول آرایه را یک واحد کاهش می‌دهد. توجه به این نکته مهم است که متد shift()

نیاز به فهرست مجدد تمام عناصر باقی‌مانده آرایه دارد. بنابراین، در مقایسه با متد pop()

 که برای حذف آخرین عنصر از آرایه استفاده می‌شود، کندتر است.

مثال متد shift در جاوا اسکریپت

در ادامه برای درک بهتر متد shift()

در جاوا اسکریپت چند مثال ساده ارائه می‌شود.

١. حذف اولین عنصر از آرایه با متد shift

مثال زیر نحوه حذف اولین عنصر آرایه با متد shift()

را نشان می‌دهد.

const numbers = [10, 20, 30];
let number = numbers.shift();

console.log({ number });
console.log({ numbers });
console.log({ length: numbers.length });

خروجی این مثال به صورت زیر است.

{ number: 10 }
{ numbers: [ 20, 30 ] }
{ length: 2 }

تصویر زیر نحوه انجام عملیات صورت گرفته با متد shift()

را نشان می‌دهد:

متد shift در جاوا اسکریپت

٢. حذف تمام عناصر آرایه با متد shift

در مثال زیر، متد shift()

همراه با حلقه while در جاوا اسکریپت برای حذف تمام عناصر از آرایه استفاده شده است.

const numbers = [10, 20, 30];
let number;
while ((number = numbers.shift()) != undefined) {
  console.log(number);
}

قطعه کد بالا به طور مکرر متد shift()

را فراخوانی می‌کند تا زمانی که ویژگی length

 آرایه صفر شود و عملاً همه عناصر از آرایه حذف می‌شوند. خروجی کد بالا به صورت زیر است.

10
20
30

متد splice برای آرایه در جاوا اسکریپت

متدهای آرایه در جاوا اسکریپت شامل متدی همه کاره به نام splice()

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

آموزش برنامه نویسی تایپ اسکریپت TypeScript در جاوا اسکریپت
فیلم آموزش برنامه نویسی تایپ اسکریپت TypeScript در جاوا اسکریپت در تم آف

کلیک کنید

متد splice()

بسیار انعطاف‌پذیری دارد می‌تواند برای اهداف مختلفی مانند موارد زیر استفاده شود:

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

با استفاده از متد splice()

این قابلیت وجود دارد که کاربر محتوای یک آرایه را به صورت پویا دستکاری کرده و کنترل گسترده‌ای را بر عناصر آن ارائه دهد.

حذف عناصر با متد splice

برای حذف عناصر از آرایه با استفاده از متد splice()

باید دو آرگومان مانند سینتکس زیر ارائه شود:

array.splice(position, num);

پارامتر position

 ، اندیس اولین عنصری را مشخص می‌کند که باید حذف شود، در حالی که پارامتر num

تعداد عناصری را نشان می‌دهد که باید حذف شوند. هنگامی که متد splice()

اجرا می‌شود، آرایه اصلی را اصلاح می‌کند و آرایه‌ای جدید حاوی عناصر حذف شده را بازمی‌گرداند.

برای درک بهتر در ادامه مثالی ارائه می‌شود. فرض بر این است که آرایه‌ای شامل اعداد ١ تا ۵ به صورت زیر وجود دارد:

let scores = [1, 2, 3, 4, 5];

حال قطعه کد زیر سه عنصر از آرایه را حذف می‌کند که از عنصر اول شروع خواهند شد.

let deletedScores = scores.splice(0, 3);

خروجی با اِعمال متد splice()

در بالا به صورت زیر خواهد بود:

console.log(scores); //  [4, 5]

تصویر زیر نحوه انجام عملیات فوق را نشان می‌دهد:

فیلم متدهای آرایه در جاوا اسکریپت

درج عناصر در آرایه با متد splice

برای درج یک یا چند عنصر در آرایه، می‌توان از متد splice()

با سه یا چند آرگومان استفاده کرد که در آن آرگومان دوم روی صفر ( 0

 ) تنظیم شده است. سینتکس این روش در ادامه آمده است.

array.splice(position, 0, new_element_1, new_element_2, ...);

توضیحات سینتکس بالا به صورت زیر است:

  • پارامتر position

    ، موقعیت شروع را در آرایه‌ای تعیین می‌کند که عناصر جدید در آن درج خواهند شد.

  • آرگومان دوم صفر ( 0

    ) است که نشان می‌دهد هیچ عنصری نباید با متد splice()

    حذف شود.

  • آرگومان سوم، آرگومان چهارم و غیره نشان دهنده عناصر جدیدی هستند که باید در آرایه درج شوند.

توجه به این نکته مهم است که متد splice()

مستقیماً آرایه اصلی را تغییر می‌دهد. از آنجایی که هیچ عنصری در این سناریو حذف نمی‌شود، متد آرایه‌ای خالی را بازمی‌گرداند. برای درک بهتر، فرض بر این خواهد بود که آرایه‌ای از رنگ‌ها به صورت زیر موجود است:

console.log(colors); // ["red", "green", "purple", "blue"]

حال قطعه کد زیر عنصری دیگر را بعد از عنصر دوم با استفاده از متد splice()

به آرایه اضافه می‌کند.

colors.splice(2, 0, 'purple');

خروجی نهایی به صورت زیر خواهد بود:

console.log(colors); // ["red", "green", "purple", "blue"]

تصویر زیر نحوه انجام عملیات بالا را نشان می‌دهد:

آموزش جاوا اسکریپت مقدماتی

جایگزینی عناصر با متد splice

یکی از کاربردهای دیگر متد splice()

به عنوان یکی از متدهای آرایه در جاوا اسکریپت، جایگزینی عناصر است. متد splice()

این قابلیت را فراهم می‌کند تا عناصر جدید را در آرایه وارد و هم‌زمان عناصر موجود را حذف کند. برای رسیدن به این هدف، باید حداقل سه آرگومان برای متد splice()

ارائه شود. آرگومان دوم تعداد آیتم‌هایی را که باید حذف شوند را مشخص می‌کند، در حالی که آرگومان سوم نشان دهنده عناصری است که باید درج شوند.

آموزش برنامه نویسی تایپ اسکریپت TypeScript در جاوا اسکریپت
فیلم آموزش برنامه نویسی تایپ اسکریپت TypeScript در جاوا اسکریپت در تم آف

کلیک کنید

شایان ذکر است لزومی ندارد تعداد عناصری که باید حذف شوند با تعداد عناصری که باید درج شوند یکسان باشد. متد splice()

امکان انعطاف‌پذیری در اصلاح آرایه را با حذف عناصر خاص و افزودن عناصر جدید به طور همزمان فراهم می‌کند. برای درک بهتر فرض بر این است که آرایه‌ای با عناصر زیر وجود دارد:

let languages = ['C', 'C++', 'Java', 'JavaScript'];

عبارت زیر عنصر دوم را با عنصر جدید جایگزین می‌کند.

languages.splice(1, 1, 'Python');

خروجی نهایی به صورت زیر خواهد بود.

console.log(languages); 
// ["C", "Python", "Java", "JavaScript"]

تصویر زیر هم نشان دهنده نحوه انجام عملیات بالا است.

JavaScript Array Splice Replace

متد slice در جاوا اسکریپت

شی Array.prototype

 متد slice()

 را به عنوان یکی دیگر از متدهای آرایه در جاوا اسکریپت ارائه می‌دهد که استخراج زیر مجموعه‌ای از عناصر را از آرایه‌ای امکان‌پذیر می‌کند و آرایه جدیدی حاوی آن عناصر ایجاد خواهد کرد. سینتکس این متد به صورت زیر است:

slice(start, stop);

متد slice()

در جاوا اسکریپت دارای دو پارامتر اختیاری start

 و stop

 است که شرح آن‌ها به صورت زیر خواهد بود:

  • پارامتر start

    ، اندیس مبتنی بر صفر را تعیین می‌کند که استخراج باید از آن آغاز شود. اگر start

    ارائه نشده باشد، slice()

    از اندیس 0

     شروع می‌شود.

  • پارامتر stop

    نمایانگر اندیس مبتنی بر صفر است که استخراج باید در آن پایان یابد. متد slice()

    عنصر را در موقعیت توقف در آرایه جدید استخراج می‌کند، اما شامل خود عنصر موجود در آن اندیس نمی‌شود. اگر stop

    حذف شود، slice()

    از طول آرایه به عنوان نقطه توقف استفاده می‌کند.

مطلب پیشنهادی:

تفاوت متد های ()slice() ،splice و ()split در جاوا اسکریپت – به زبان ساده

شروع مطالعه

شبیه سازی آرایه با متد slice

از متد slice()

برای انجام عمل «شبیه‌سازی» (Clone) یک آرایه مانند مثال زیر استفاده می‌شود:

var numbers = [1,2,3,4,5];
var newNumbers = numbers.slice();

در مثال فوق، آرایه newNumbers

 شامل تمام عناصر آرایه numbers

 خواهد بود.

کپی کردن بخشی از آرایه با متد slice

نوعی استفاده متداول از متد slice()

به عنوان یکی از متدهای آرایه در جاوا اسکریپت ایجاد کپی از بخش خاصی از آرایه بدون تغییر آرایه اصلی است که مثال آن در ادامه ملاحظه می‌شود.

var colors = ['red','green','blue','yellow','purple'];
var rgb = colors.slice(0,3);
console.log(rgb); // ["red", "green", "blue"]

آرایه rgb

 با استفاده از متد slice()

سه عنصر اول آرایه colors

 را به خود اختصاص می‌دهد. در این عملیات آرایه colors

بدون تغییر باقی می‌ماند.

تبدیل اشیا آرایه مانند به آرایه با متد slice

متد slice()

به منظور تبدیل شی آرایه مانند به آرایه استفاده می‌شود و مثال زیر برای درک این مفهوم آورده شده است.

function toArray() {
  return Array.prototype.slice.call(arguments);
}

var classification = toArray('A','B','C');

console.log(classification); // ["A", "B", "C"]

در مثال فوق، تابع toArray()

 نوعی شی آرایه مانند را به عنوان آرگومان خود می‌گیرد. در تابع toArray()

از متد slice()

برای تبدیل شی آرگومان‌ها به آرایه استفاده شده است. هر آرگومان ارسال شده به تابع toArray()

به عنصری در آرایه حاصل تبدیل می‌شود.

یافتن عناصر با متدهای آرایه در جاوا اسکریپت

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

آموزش برنامه نویسی تایپ اسکریپت TypeScript در جاوا اسکریپت
فیلم آموزش برنامه نویسی تایپ اسکریپت TypeScript در جاوا اسکریپت در تم آف

کلیک کنید

متد indexOf در جاوا اسکریپت

برای تعیین موقعیت عنصر در آرایه، می‌توان از متد indexOf()

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

 بازگردانده خواهد شد.

سینتکس این متد به صورت زیر است:

array.indexOf(searchElement، fromIndex)

توضیحات سینتکس بالا در ادامه فهرست شده‌اند.

  • آرگومان searchElement

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

  • آرگومان fromIndex

     نوعی پارامتر اختیاری است و اندیسی را مشخص می‌کند که جستجو در آرایه باید در آن شروع شود. این آرگومان می‌تواند عدد صحیح مثبت یا منفی باشد. اگر fromIndex

    منفی باشد، متد indexOf()

    جستجو را از طول آرایه به اضافه fromIndex

    شروع می‌کند.

  • اگر آرگومان fromIndex

    حذف شود، متد indexOf()

    جستجو را از ابتدای آرایه آغاز می‌کند.]

آموزش متد آرایه در جاوا اسکریپت

مثال متد indexOf در جاوا اسکریپت

در ادامه چند مثال از متد indexOf()

در جاوا اسکریپت برای درک بهتر ارائه خواهد شد. فرض بر این است که آرایه‌ای با ۶ عنصر به صورت زیر وجود دارد.

var scores = [10, 20, 30, 10, 40, 20];

قطعه کد زیر عناصر مد نظر را با استفاده از متد indexOf()

پیدا می‌کند.

console.log(scores.indexOf(10)); // 0
console.log(scores.indexOf(30)); // 2
console.log(scores.indexOf(50)); // -1
console.log(scores.indexOf(20)); // 1

تصویر زیر نحوه انجام عملیات فوق را نشان می‌دهد:

متد indexOf در جاوا اسکریپت

مثال زیر هم نحوه استفاده از fromIndex

را با مقادیر منفی نشان می‌دهد:

console.log(scores.indexOf(20,-1)); // 5 (fromIndex = 6+ (-1) = 5)
console.log(scores.indexOf(20,-5)); // 1 (fromIndex = 6+ (-5) = 1)

متد lastIndexOf در جاوا اسکریپت

متد آرایه lastIndexOf()

 هدفی مشابه متد indexOf()

دارد و سینتکس آن به شرح زیر است:

array.lastIndexOf(searchElement[, fromIndex = array.length - 1])

متد lastIndexOf()

آخرین رخداد searchElement را در آرایه جستجو می‌کند و اندیس آن را برمی‌گرداند. اگر عنصر پیدا نشد، -1

 را بازمی‌گراند.

آموزش ویو جی اس – فریم ورک Vue.js در جاوا اسکریپت JavaScript
فیلم آموزش ویو جی اس – فریم ورک Vue.js در جاوا اسکریپت JavaScript در تم آف

کلیک کنید

برخلاف متد indexOf()

، lastIndexOf()

نوعی جستجوی معکوس انجام می‌دهد که از پارامتر fromIndex

شروع می‌شود. به طور پیش‌فرض، fromIndex

روی array.length – 1

 تنظیم شده است که نشان می‌دهد جستجو از آخرین عنصر آرایه شروع می‌شود. توجه به این نکته مهم است که متد lastIndexOf()

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

console.log(scores.lastIndexOf(10));// 3
console.log(scores.lastIndexOf(20));// 5

در تصویر زیر نحوه انجام عملیات فوق را نمایش داده شده است.

متد lastIndexOf در جاوا اسکریپت

در کد بالا چون عدد 50

 در آرایه نیست، عبارت زیر -1

 را بازمی‌گرداند.

console.log(scores.lastIndexOf(50));// -1

متد includes در جاوا اسکریپت

یکی دیگر از متدهای آرایه در جاوا اسکریپت به منظور یافتن عناصر، متد includes()

 است. هنگام کار با آرایه، اغلب باید بررسی شود که آیا آرایه حاوی عنصر خاصی است یا خیر. در جاوا اسکریپت می‌توان از متد indexOf()

برای رسیدن به این هدف استفاده کرد. مثال زیر نحوه استفاده از این متد را نشان می‌دهد:

let numbers = [1,2,3];
if(numbers.indexOf(2) !== -1){
   // process here
}

متد indexOf()

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

 بازگردانده می‌شود.

با این حال، هنگام استفاده از indexOf()

با مقادیر خاصی مانند NaN

 محدودیت وجود دارد. NaN

نوعی مقدار عددی خاص در جاوا اسکریپت است که مقداری غیرقابل نمایش یا تعریف نشده را نشان می‌دهد. به دلیل ماهیت NaN

، متد indexOf()

نمی‌تواند NaN

را با سایر مقادیر NaN

مقایسه کند. در نتیجه، اگر کاربر سعی کند از indexOf()

برای یافتن NaN

در آرایه استفاده کند، به اشتباه -1

را بازمی‌گرداند. مثال زیر برای درک این مفهموم است:

[NaN].indexOf(NaN); // -1

در مثال فوق، آرایه حاوی عنصر NaN

است. با این حال، هنگام استفاده از متد indexOf(NaN)

 مقدار -1

را برمی‌گرداند که نادرست است. برای رفع این محدودیت، توسعه‌دهندگان توابع کمکی را ارائه کرده‌اند. به عنوان مثال، کتابخانه «Lodash» متد _.includes()

 را ارائه می‌دهد که به طور موثر بررسی می‌کند آیا مقداری خاص در آرایه وجود دارد یا خیر.

آموزش JavaScript ES6 جاوا اسکریپت
فیلم آموزش JavaScript ES6 جاوا اسکریپت در تم آف

کلیک کنید

در «ECMAScript 2016»، این عملکرد با معرفی متد includes()‎

 استاندارد شد. این متد به کاربر امکان می‌دهد تعیین کند که آیا آرایه شامل عنصر خاصی است یا خیر، اگر عنصر پیدا شد مقدار true

 و در غیر این صورت false

 را برمی‌گرداند.

array.includes(element,fromIndex);

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

 نیز موقعیتی در آرایه است که جستجو در آن شروع می‌شود. مثال زیر برای درک این متد آورده شده است:

[1,2,3].includes(2); // true
[1,2,3].includes(4); // false
[1,2,3].includes(1,1); // false

متد Find در جاوا اسکریپت

یکی دیگر از متدهای آرایه در جاوا اسکریپت برای یافتن عناصر مد نظر، متد find()

 است. در «ES5»، اگر کاربر بخواهد عنصری را در آرایه پیدا کند، باید از متدهای indexOf()

 یا lastIndexOf()

 بهره ببرد. با این حال، این متدها محدودیت‌هایی داشتند، زیرا آن‌ها فقط اندیس اولین عنصر تطابق را بازمی‌گرداندند.

آموزش مقدماتی نود جی اس Node.js
فیلم آموزش مقدماتی نود جی اس Node.js در تم آف

کلیک کنید

در «ES6» متد قدرتمندتری به نام find()

را معرفی شد که به شی Array.prototype

 اضافه شده است. متد find()

به کاربر امکان می‌دهد اولین عنصر را در آرایه که شرایط مشخصی را برآورده می‌کند جستجو و بازیابی کند. در ادامه سینتکس متد find()

آمده است:

find(callback(element[, index[, array]])[, thisArg])

متد find()

دو آرگومان می‌گیرد، اولی تابع callback

 و دومی مقداری اختیاری برای کلمه کلیدی This در جاوا اسکریپت برای callback

 است.

Callback در متد Find

callback

در متد findCallback

 تابعی است که برای هر عنصر در آرایه اجرا می‌شود. این پارامتر می‌تواند حداکثر سه آرگومان داشته باشد:

  • element

     : عنصر فعلی در حال پردازش

  • index

     : اندیس عنصر فعلی در حال پردازش

  • array

     : آرایه فراخوانی شده در متد find()

  • thisArg

     : (اختیاری)

نکته: پارامتر thisArg

به کاربر امکان می‌دهد مقداری را که به عنوان this در تابع callback

استفاده می‌شود را مشخص کند.

مقدار برگشتی در متد find

متد find()

تابع callback

را برای هر عنصر در آرایه اجرا می‌کند تا زمانی که callback

مقدار واقعی را برگرداند. هنگامی که مقدار true

 برگردانده شد، find()

بلافاصله جستجو را متوقف کرده و عنصری را بازمی‌گرداند که شرط را برآورده می‌کند. اگر هیچ عنصری شرط را برآورده نکرد، این متد مقدار «تعریف نشده» (Undefined) را بازمی‌گرداند.

مثال متد find در جاوا اسکریپت

در ادامه مثالی برای درک بهتر متد find()

به عنوان یکی از متدهای آرایه در جاوا اسکریپت آورده شده است:

let numbers = [1, 2, 3, 4, 5];

console.log(numbers.find(e => e % 2 == 0));

خروجی به صورت زیر است:

2

متد FindIndex در جاوا اسکریپت

یکی دیگر از متدهای آرایه در جاوا اسکریپت به منظور یافتن عناصر مد نظر در آرایه، متد findIndex()

 است. «ES6» این متد جدید را در Array.prototype

 معرفی کرد که به کاربر امکان می‌دهد اندیس اولین عنصر را در آرایه‌ای که شرط تابع مشخصی را برآورده می‌کند، بازیابی کند.

در واقع متد findIndex()

اندیس عنصری را برمی‌گرداند که شرط تابع را برآورده می‌کند، در غیر این صورت -1

 را بازمی‌گرداند. سینتکس این متد آرایه در جاوا اسکریپت به صورت زیر است:

findIndex(testFn(element[, index[, array]])[, thisArg])

متد findIndex()

دو آرگومان زیر را می پذیرد:

  • testFn

     : پارامتر testFn

    تابعی است که بر روی هر عنصر آرایه اجرا می‌شود تا زمانی که مقدار true

     را برگرداند که نشان می‌دهد عنصر مورد نظر پیدا شده است.

  • thisArg

     : پارامتر thisArg

    شیئی اختیاری است که می‌تواند به عنوان مقدار this

     در تابع testFn

    استفاده شود. اگر thisArg حذف شود، تابع findIndex()

    مقدار undefined را به عنوان مقدار پیش‌فرض this

    استفاده می‌کند.

متد findIndex()

تابع testFn

را بر روی هر عنصر آرایه اجرا می‌کند تا زمانی که عنصری را پیدا کند که در آن testFn

مقدار true

را برمی‌گرداند.  هنگامی که متد findIndex()

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

مثال متد findIndex در جاوا اسکریپت

در زیر ٢ مثال از متد findIndex()

در جاوا اسکریپت برای درک بهتر آن به عنوان یکی از متدهای آرایه آورده شده است.

آموزش نود جی اس، انگولار و مونگو دی بی – طراحی سایت خبری با Angular ،Node.js  و MongoDB
فیلم آموزش نود جی اس، انگولار و مونگو دی بی – طراحی سایت خبری با Angular ،Node.js و MongoDB در تم آف

کلیک کنید

مثال زیر اندیس اولین تکرار عدد 7

 را در آرایه مد نظر بازمی‌گرداند:

let ranks = [1, 5, 7, 8, 10, 7];
let index = ranks.findIndex(rank => rank === 7);
console.log(index);

خروجی به صورت زیر است:

2    

 مثال بعدی، از متد findIndex()

برای به دست آوردن اندیس اولین وقوع عدد 7

بعد از اندیس 2

 در آرایه مد نظر استفاده خواهد کرد:

let ranks = [1, 5, 7, 8, 10, 7];

let index = ranks.findIndex(
    (rank, index) => rank === 7 && index > 2
);

console.log(index);

خروجی این مثال هم به صورت زیر است:

5

متدهای مرتبه بالای آرایه در جاوا اسکریپت

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

آموزش JavaScript ES6 جاوا اسکریپت
فیلم آموزش JavaScript ES6 جاوا اسکریپت

کلیک کنید

متدهای این بخش به صورت فهرست زیر هستند:

  • map
  • filter
  • reduce
  • every
  • some
  • sort
  • forEach

متد Map در جاوا اسکریپت

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

 برای پیمایش عناصر، تغییر هر یک و متعاقباً ذخیره نتایج در آرایه جدید به دست می‌آید. به عنوان مثال، تصور کنید آرایه‌ای از اعداد وجود دارد که در آن هر عنصر نشان دهنده شعاع دایره است، مانند مثال زیر:

let circles = [
    10, 30, 50
];

برای محاسبه مساحت هر دایره و انتقال نتیجه به آرایه جدید، می‌توان از کد زیر استفاده کرد:

let areas = []; // to store areas of circles
let area = 0;
for (let i = 0; i 

رویکرد بالا بسیار رایج است اما می‌تواند پیچیده باشد. با به وجود آمدن «ES5»، کلاس آرایه جاوا اسکریپت شامل متدی به نام map()

 شد که به کاربر امکان می‌دهد عناصر آرایه را به شیوه‌ای ساده‌تر تغییر دهد. مثال زیر برای درک متد Map در جاوا اسکریپت آورده شده است:

function circleArea(radius) {
    return Math.floor(Math.PI * radius * radius);
}
let areas = circles.map(circleArea);
console.log(areas);

خروجی این متد آرایه در جاوا اسکریپت به صورت زیر است:

[314, 2827, 7853]

در مثال فوق ابتدا تابعی به نام circleArea

 تعریف شده است که مساحت یک دایره را محاسبه می‌کند. سپس، این تابع circleArea

به متد map()

منتقل می‌شود. متد map()

تابع circleArea

را برای هر عنصر از آرایه circle

 فراخوانی می‌کند و آرایه‌ای جدید با عناصری که بر این اساس تبدیل شده‌اند را بازمی‌گرداند. حتی برای کوتاه‌تر کردن سینتکس، می‌توان در متد map()

تابعی ناشناس را به صورت زیر ارسال کرد.

let areas = circles.map(function(radius){
    return Math.floor(Math.PI * radius * radius);
});
console.log(areas);

همچنین، می‌توان از «توابع پیکان» (Arrow Functions) در «ES6» برای رسیدن به همان نتیجه این بار با کدی خواناتر به صورت زیر استفاده کرد:

let areas = circles.map(radius => Math.floor(Math.PI * radius * radius));
console.log(areas);

سینتکس متد map در جاوا اسکریپت

به صورت کلی سینتکس و جزئیات متد map()

در جاوا اسکریپت به صورت زیر است:

arrayObject.map(callback[,contextObject]);

متد map()

نوعی تابع فراخوانی را روی هر عنصر در آرایه اجرا می‌کند و آرایه جدید حاوی نتایج را برمی‌گرداند. این متد دو آرگومان را می‌پذیرد، اولی تابع callback

 مورد نیاز و دومی نوعی شی زمینه اختیاری به نام contextObject

 خواهد بود. تابع callback

به طور کلی به شکل زیر است:

function callback(currentElement,index,array){
  // ... 
}

آرگومان‌های تابع callback

به صورت زیر هستند:

  • CurrentElement

     : عنصر موجود در آرایه در حال پردازش (اجباری).

  • index

     : اندیس عنصر فعلی (اختیاری).

  • array

     : آرایه در حال پردازش (اختیاری).

نکته مهم این است که متد map()

آرایه اصلی را تغییر نمی‌دهد، در عوض، آرایه جدیدی ایجاد می‌کند که حاوی عناصری است که به وسیله تابع callback

تبدیل شده‌اند. مثال زیر نشان می‌دهد که چگونه می‌توان آرایه‌ای از اعداد را با استفاده از متد map()

از کلاس Math

 به عنوان تابع callback

تغییر داد.

let numbers = [16, 25, 36];
let results = numbers.map(Math.sqrt);
console.log(results);

خروجی به صورت زیر خواهد بود:

 [4, 5, 6]

متد فیلتر برای آرایه در جاوا اسکریپت چیست؟

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

arrayObject.filter(callback, contextObject);

متد filter()

 برای هر عنصر آرایه یک تابع callback

را فراخوانی می‌کند. اگر تابع callback

مقدار True

 را برگرداند، آن عنصر در آرایه حاصل گنجانده می‌شود. متد filter()

هم ۲ آرگومان دارد، اولی تابع callback

مورد نیاز و دیگری contextObject

 به عنوان پارامتری اختیاری. ساختار تابع callback

به صورت زیر است.

function callback(currentElement, index, array){
   // ...
}

آرگومان های تابع callback

به صورت زیر هستند:

  • currentElement

     : عنصر آرایه در حال پردازش

  • index

     : اندیس عنصر جاری

  • array

     : آرایه در حال پردازش

هر ۲ آرگومان اندیس و آرایه اختیاری هستند. یکی از نکات مهمی که باید به خاطر سپرد این است که متد filter()

به عنوان یکی از متدهای آرایه در جاوا اسکریپت، آرایه اصلی را تغییر نمی‌دهد، بلکه آرایه‌ای جدید بر اساس معیارهای فیلتر تعریف شده در تابع callback

ایجاد می‌کند.

مثال متد فیلتر در جاوا اسکریپت

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

let cities = [
    {name: 'Los Angeles', population: 3792621},
    {name: 'New York', population: 8175133},
    {name: 'Chicago', population: 2695598},
    {name: 'Houston', population: 2099451},
    {name: 'Philadelphia', population: 1526006}
];

حال نحوه استفاده از متد فیلتر برای استخراج شهرهایی که بیش از ٣ میلیون جمعیت دارند به صورت زیر است:

let bigCities = cities.filter(function (e) {
    return e.population > 3000000;
});
console.log(bigCities);

خروجی به صورت زیر خواهد بود:

[
  { name: 'Los Angeles', population: 3792621 },
  { name: 'New York', population: 8175133 }
]

حتی در ES6 می‌توان سینتکس بالا را کوتاه‌تر کرد و به نتیجه مشابهی رسید که کد زیر این موضوع را برای مثال بالا بیان می‌کند:

let bigCities = cities.filter(city => city.population > 3000000);

console.log(bigCities);

متد Reduce در جاوا اسکریپت

متد Reduce در جاوا اسکریپت به عنوان یکی از متدهای آرایه به منظور کاهش یا متراکم کردن آرایه به مقداری واحد با اجرای نوعی تابع کاهنده بر روی هر عنصر آرایه استفاده می‌شود.

آموزش آلپاین در جاوا اسکریپت – فریم ورک Alpine در JavaScript
فیلم آموزش آلپاین در جاوا اسکریپت – فریم ورک Alpine در JavaScript در تم آف

کلیک کنید

سینتکس این متد آرایه در جاوا به صورت زیر است:

array.reduce(callbackFn [, initialValue])

متد reduce()

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

متد reduce()

تابع callbackFn()

 را برای هر عنصر در آرایه فراخوانی می‌کند، با تابع callbackFn()

مقداری را برمی‌گرداند که نشان دهنده نتیجه تجمعی هر فراخوانی به این تابع در سراسر آرایه است. خود تابع callbackFn()

از ساختار زیر پیروی می‌کند:

function callbackFn(previousValue, currentValue, currentIndex, array) { /**/}

تابع callbackFn()

۴ آرگومان زیر را می‌گیرد:

  • previousValue

     : مقدار بازگشتی از فراخوانی قبلی تابع callbackFn()

  • CurrentValue

     : عنصر فعلی در حال پردازش در آرایه

  • currentIndex

     : اندیس عنصر جاری در آرایه

  • array

     : آرایه در حال پردازش

مثال متد Reduce در جاوا اسکریپت

در زیر دو مثال ساده از متد reduce()

در جاوا اسکریپت آورده شده است، برای این منظور آرایه‌ای از اعداد مد نظر خواهد بود و در آن می‌خواهیم جمع کل عناصر آرایه را باهم حساب کنیم. روش رسیدن به این هدف با متد reduce()

به صورت قطعه کد زیر است:

let numbers = [1, 2, 3];
let sum = numbers.reduce(function (previousValue, currentValue) {
    return previousValue + currentValue;
});

console.log(sum);

خروجی این قطعه کد به صورت زیر خواهد بود:

6

در بسیاری از سناریوهای مختلف و پیچیده از متد reduce()

در جاوا اسکریپت استفاده می‌شود که در این مطلب به همین مقدار توضیحات و مثال بسنده می‌کنیم.

متد ReduceRight در جاوا اسکریپت

متد reduceRight()

 مشابه متد reduce()

عمل می‌کند، اما به ترتیب معکوس کار مد نظر را انجام می‌دهد. در حالی که متد reduce()

از اولین عنصر شروع می‌شود و به سمت آخرین عنصر حرکت می‌کند، متد reduceRight()

از آخرین عنصر شروع می‌شود و به سمت عقب به سمت اولین عنصر حرکت خواهد کرد. مثال زیر نحوه کار متد reduceRight()

را نشان می‌دهد.

let numbers = [1, 2, 3];

let sum = numbers.reduceRight(function (previousValue, currentValue) {
  console.log({ previousValue, currentValue });
  return previousValue + currentValue;
});

console.log(`Result:${sum}`);

خروجی این متد به صورت زیر است:

{ previousValue: 3, currentValue: 2 }
{ previousValue: 5, currentValue: 1 }
Result:6

تصویر زیر نحوه انجام کار متد reduceRight()

و متد reduce()

را نشان می‌دهد:

متد reduceRight در جاوا اسکریپت

متد Every در جاوا اسکریپت

«ES5» به عنوان یکی از متدهای آرایه در جاوا اسکریپت، every()

 را معرفی کرد که برای آزمایش اینکه آیا همه عناصر آرایه شرط خاصی را برآرود می‌کنند یا خیر طراحی شده است.

آموزش پروژه محور جاوا اسکریپت – پیاده سازی سبد خرید فروشگاهی با JavaScript
فیلم آموزش پروژه محور جاوا اسکریپت – پیاده سازی سبد خرید فروشگاهی با JavaScript در تم آف

کلیک کنید

در ادامه مثالی از نحوه استفاده از متد every()

برای بررسی اینکه آیا همه عناصر آرایه numbers

 بزرگتر از صفر هستند، آورده شده است:

let numbers = [1, 3, 5];
let result = numbers.every(function (e) {
    return e > 0;
});

console.log(result); //Output: true

استفاده از توابع پیکان «ES6» امکان انجام این کار را به صورت کوتاه‌تر مشابه قطعه کد زیر انجام می‌دهد.

let numbers = [1, 3, 5];
let result = numbers.every(e => e > 0);
console.log(result); //Output: true

سینتکس متد every()

به صورت زیر است:

arrayObject.every(callback[, thisArg])

متد every()

دو پارامتر می‌گیرد که اولی تابع callback

و دومی پارامتر اختیاری thisArg

 است. پارامتر callback

تابعی محسوب می‌شود که هر عنصر آرایه را بررسی می‌کند و به صورت زیر نوشته می‌شود:

function callback(currentElement, index, array){
   //...
}

تابع callback

سه آرگومان زیر را می‌گیرد:

  • currentElement

     : عنصر در حال حاضر پردازش بوده و وجود آن اجباری است.

  • index

     : اندیس عنصر currentElement

    بوده و اختیاری محسوب می‌شود.

  • array

     : آرایه‌ای که متد every()

    بر اساس آن فراخوانی خواهد شد و اختیاری است.

پارامتر thisArg

اختیاری است و در صورت ارائه، مقدار this

 در تابع callback

به آرگومان thisArg

اشاره خواهد کرد. اگر تابع callback

برای هر عنصر آرایه مقدار true

ایجاد کند، متد every()

به عنوان خروجی true

 را برمی‌گرداند، در غیر این صورت، false

 را بازخواهد گرداند.

توجه به این نکته مهم است که متد every()

تابع callback

را در هر عنصر در آرایه فراخوانی می‌کند. زمانی این عمل انجام خواهد گرفت که با عنصری مواجه شود که باعث می‌شود تابع callback

مقدار نادرست را برگرداند. در این مرحله، every()

فراخوانی تابع callback

را متوقف می‌کند و false

را بازمی‌گرداند.

مثال متد Every در جاوا اسکریپت

مثال زیر بررسی می‌کند که آیا همه عناصر آرایه زوج هستند یا خیر:

let numbers = [1, 3, 5];
let isEven = numbers.every(function (e) {
    return e % 2 == 0;
});

console.log(isEven);

خروجی این مثال به صورت زیر است:

false

حال برای فرد بودن هم باید به صورت زیر عمل کرد:

let numbers = [1, 3, 5];

let isOdd = numbers.every(function (e) {
    return Math.abs(e % 2) == 1;
});

console.log(isOdd);

این بار خروجی به صورت زیر است:

true

متد Some در جاوا اسکریپت

متد some()

به عنوان یکی از متدهای آرایه در جاوا اسکریپت برای بررسی این موضوع است که آیا حداقل یکی از عناصر آرایه شرط داده شده را برآورده می‌کند یا خیر. سینتکس این متد به صورت زیر در نظر گرفته می‌شود:

arrayObject.some(callback[, thisArg]);

متد some()

 دارای دو پارامتر تابع callback

و آرگومان thisArg

است. متد some()

تابع callback

را برای هر عنصر در آرایه اجرا می‌کند تا زمانی که عنصری را پیدا کند که تابع callback

برای آن مقدار true

را بازمی‌گردابد. با یافتن چنین عنصری، some()

بلافاصله true

را بدون ارزیابی عناصر باقیمانده بازخواهد گرداند. اگر تابع callback

هرگز true

را برای هیچ عنصری برنگرداند، متد some()

مقدار false

را برمی‌گرداند. تابع callback

خود به صورت زیر نوشته می‌شود:

function callback(currentElement [, currentIndex [, array]]) { 
    // ...
}
  • currentElement

     : به عنصری که در حال حاضر در آرایه پردازش می شود اشاره دارد.

  • currentIndex

     : اندیس عنصر فعلی است که در آرایه پردازش می شود.

  • array

     : آرایه ای است که متد some()

     روی آن فراخوانی شده است.

thisArg

در این میان پارامتری اختیاری است. اگر thisArg

به متد ارسال شود، می‌توان از آن به عنوان مقدار this

 در تابع callback

استفاده کرد.

متد Some در جاوا اسکریپت

مثال متد Some در جاوا اسکریپت

در مثال زیر تابع exists()

 از متد some()

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

function exists(value, array) {
    return array.some(e => e === value);
}

let marks = [4, 5, 7, 9, 10, 2];

console.log(exists(4, marks));
console.log(exists(11, marks));

خروجی مثال بالا به صورت زیر است.

true
false

مثال زیر هم نشان می‌دهد که آیا اعداد موجود در آرایه در محدوده (8، 10)

 قرار دارند یا خیر.

let marks = [4, 5, 7, 9, 10, 2];

const range = {
    min: 8,
    max: 10
};

let result = marks.some(function (e) {
    return e >= this.min && e 

خروجی به صورت زیر است:

true

متد Sort در جاوا اسکریپت

متد sort()

 به عنوان یکی از متدهای آرایه در جاوا اسکریپت به کاربر اجازه می‌دهد تا عناصر آرایه را در جای خود مرتب کند. این متد نه تنها آرایه مرتب شده را برمی‌گرداند، بلکه موقعیت عناصر آرایه اصلی را نیز تغییر می‌دهد. به طور پیش‌فرض، sort()

عناصر آرایه را به ترتیب صعودی سازماندهی می‌کند.

آموزش آلپاین در جاوا اسکریپت – فریم ورک Alpine در JavaScript
فیلم آموزش آلپاین در جاوا اسکریپت – فریم ورک Alpine در JavaScript در تم آف

کلیک کنید

این متد عناصر را به عنوان رشته در نظر می‌گیرد و آن‌ها را از نظر لغوی مقایسه می‌کند. مثال زیر نحوه استفاده از متد sort()

را نشان می‌دهد:

let numbers = [0, 1, 2, 3, 10, 20, 30];
numbers.sort();
console.log(numbers); //Output: [0, 1, 10, 2, 20, 3, 30]

در مثال فوق، sort()

عدد 10

 را قبل از 2

قرار می‌دهد زیرا 10

قبل از 2

در ترتیب واژگانی بالا قرار دارد. برای رفع این مشکل می‌توان نوعی تابع مقایسه را به sort()

ارسال کرد. متد sort()

از این تابع مقایسه برای تعیین ترتیب عناصر استفاده می‌کند. سینتکس متد sort()

به صورت زیر است:

array.sort(comparefunction)

تابع مقایسه اختیاری است و دو آرگومان a

 و b

 می‌گیرد. sort()

عناصر را بر اساس مقدار بازگشتی تابع مقایسه ترتیب می‌دهد که شرح این مسئله به صورت زیر است:

  • اگر compare(a,b)

     کمتر از صفر باشد، a

    به اندیسی کمتر از b

    مرتب می‌شود.

  • اگر compare(a,b)

    بزرگتر از صفر باشد، b

    به اندیسی کمتر از a

    مرتب می‌شود.

  • اگر compare(a,b)

    صفر باشد، a

    و b

    برابر در نظر گرفته می‌شوند و موقعیت آن‌ها بدون تغییر باقی می‌ماند.

برای آرایه‌های عددی، می‌توان با استفاده از سینتکس زیر عملیات گفته شده را انجام داد:

let numbers = [0, 1, 2, 3, 10, 20, 30];
numbers.sort((a, b) => a - b);
console.log(numbers); //Output: [0, 1, 2, 3, 10, 20, 30]

در این نسخه، متد sort()

به درستی عناصر عددی را مرتب می‌کند. متد sort()

همچنین در سناریوهای زیر نیز مورد استفاده قرار می‌گیرد:

  • مرتب‌سازی آرایه‌ای از رشته‌ها
  • مرتب‌سازی آرایه‌ای از رشته‌ها با کاراکترهای غیر «ASCII»
  • مرتب‌سازی آرایه‌ای از اشیا بر اساس ویژگی مشخص
  • مرتب‌سازی اشیا بر اساس ویژگی عددی
  • مرتب‌سازی اشیا بر اساس ویژگی رشته
  • مرتب‌سازی اشیا بر اساس ویژگی date
متد Sort در جاوا اسکریپت

متد ForEach در جاوا اسکریپت

معمولاً اگر کاربری بخواهد تابعی را به هر عنصر آرایه اعمال کند، از حلقه for

استفاده خواهد کرد. به عنوان مثال، کد زیر هر عنصر آرایه را در کنسول چاپ می‌کند:

let ranks = ['A', 'B', 'C'];
for (let i = 0; i 

خروجی کد بالا به صورت زیر است:

A
B
C

حال متد forEach()

به عنوان یکی از متدهای آرایه در جاوا اسکریپت با اجرای تابعی در هر عنصر آرایه این فرآیند را ساده می‌کند. در ادامه نحوه بازنویسی کد قبلی با استفاده از forEach در جاوا اسکریپت آورده شده است:

let ranks = ['A', 'B', 'C'];
ranks.forEach(function (e) {
    console.log(e);
});

خروجی کد فوق همان خروجی کد اولی است. متد forEach()

عناصر آرایه را پیمایش می‌کند و نوعی تابع ارائه شده را یک بار برای هر عنصر اجرا خواهد کرد. سینتکس متد forEach()

به صورت زیر است:

Array.forEach(callback [, thisArg]);

متد forEach()

دو پارامتر را می‌پذیرد، اولی تابع callback

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

 است که آرگومانی اختیاری محسوب می‌شود. خود تابع callback

می‌تواند سه آرگومان زیر را داشته باشد:

  1. currentElement

     : عنصر آرایه در حال پردازش است.

  2. index

     : اندیس currentElement

    در آرایه به‌حساب می‌آید.

  3. array

     : آرایه‌ای که متد forEach()

    را فراخوانی می‌کند.

پارامترهای index

و array

اختیاری هستند. thisArg

، آرگومانی اختیاری است که به عنوان مقدار this

 هنگام اجرای callback

استفاده می‌شود. نقطه ضعف forEach()

در مقایسه با حلقه for

ناتوانی در استفاده از break

 یا continue

 برای کنترل حلقه است. برای متوقف کردن حلقه هنگام استفاده از forEach()

، باید یک استثنا در تابع callback

ایجاد کرد.

آموزش کتابخانه Redux در جاوا اسکریپت JS برای مدیریت وضعیت برنامه ها
فیلم آموزش کتابخانه Redux در جاوا اسکریپت JS برای مدیریت وضعیت برنامه ها در تم آف

کلیک کنید

مثال متد ForEach در جاوا اسکریپت

در این مثال نمونه‌ای از متد forEach()

بررسی خواهد شد که از شی متنی استفاده می‌کند. ابتدا تابع سازنده شمارنده زیر را باید در نظر گرفت:

function Counter() {
    this.count = 0;
    let self = this;
    return {
        increase: function () {
            self.count++;
        },
        current: function () {
            return self.count;
        },
        reset: function () {
            self.count = 0;
        }
    }
}

این مثال نحوه ارسال شی شمارنده به متد forEach()

را نشان می‌دهد.

var counter = new Counter();
var numbers = [1, 2, 3];
var sum = 0;
numbers.forEach(function (e) {
    sum += e;
    this.increase();
}, counter);

console.log(sum); // 6
console.log(counter.current()); // 3

متدهای دستکاری آرایه در جاوا اسکریپت

یکی دیگر از دسته متدهای آرایه در جاوا اسکریپت، متدهای دست‌کاری آرایه هستند که در این بخش از آموزش به آن خواهیم پرداخت. از مهم‌ترین متدهای دستکاری آرایه در جاوا اسکریپت می‌توان به متد concat()

اشاره کرد که در ادامه مورد بحث قرار خواهد گرفت.

مجموعه آموزش جاوا اسکریپت (JavaScript)
فیلم مجموعه آموزش جاوا اسکریپت (JavaScript) در تم آف

کلیک کنید

متد concat در جاوا اسکریپت

متد concat()

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

let odds = [1,3,5];
let evens = [2,4,6];
let combined = odds.concat(evens);

console.log('Result:', combined);
console.log('Odds:', odds);

اول فرض بر این است دو آرایه به نام آرایه odds

 و evens

 موجود هستند. متد concat()

در آرایه odds

فراخوانی می‌شود و عناصر هر دو آرایه را ادغام می‌کند. این بدان معنی است که عناصر آرایه evens

به انتهای عناصر آرایه odds

اضافه می‌شوند. خروجی مثال بالا به صورت زیر است:

Result: [ 1, 3, 5, 2, 4, 6 ]
Odds: [ 1, 3, 5 ]

راه‌حل جایگزین برای استفاده از متد concat()

، فراخوانی آن در آرایه‌ای خالی است که با []

 نشان داده خواهد شد. قطه کد زیر این موضوع را بیان می‌کند:

let odds = [1,3,5];
let evens = [2,4,6];
let combined = [].concat(odds, evens);

console.log(combined);

خروجی به صورت زیر است:

[ 1, 3, 5, 2, 4, 6 ]

علاوه بر این، می‌توان از متد concat()

برای ادغام بیش از ٢ آرایه استفاده کرد. برای نمونه مثال زیر ٣ آرایه را باهم ادغام می‌کند:

let upper  = ['A','B','C'];
let lower  = ['a','b','c'];
let digits = [1,2,3];
let alphanumerics = upper.concat(lower, digits);

خروجی به صورت زیر است:

['A', 'B', 'C', 'a',  'b', 'c', 1,   2,  3]

هنگامی که هیچ آرگومانی به متد concat()

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

متد concat در جاوا اسکریپت

متدهای ایجاد آرایه در جاوا اسکریپت

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

 و from()

 هستند.

آموزش جاوا اسکریپت JavaScript
فیلم آموزش جاوا اسکریپت JavaScript در تم آف

کلیک کنید

متد Of در جاوا اسکریپت

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

let numbers = new Array(2);
console.log(numbers.length); // Output: 2
console.log(numbers[0]); // Output: undefined

در جاوا اسکریپت، وقتی مقدار غیر عددی (مثلاً رشته) به سازنده آرایه ارسال می‌شود، نتیجه آرایه‌ای است که فقط یک عنصر دارد. این عنصر واحد همان مقدار دقیقی خواهد بود که در ابتدا ارسال شده است. مثال زیر این مفهوم را می‌رساند:

numbers = new Array("2");
console.log(numbers.length); // Output: 1
console.log(numbers[0]); // Output: "2"

این رفتار می‌تواند منجر به سردرگمی و خطاهای احتمالی شود، زیرا بر اساس نوع داده ارسال شده به سازنده آرایه تغییر می‌کند. برای کاهش این مشکل، «ES6» متد of()

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

آموزش مقدماتی ری اکت نیتیو – طراحی نرم افزارهای اندروید و iOS در React Native
فیلم آموزش مقدماتی ری اکت نیتیو – طراحی نرم افزارهای اندروید و iOS در React Native در تم آف

کلیک کنید

به بیان ساده، of()

همیشه آرایه‌ای تولید می‌کند که شامل تمام مقادیر ارسال شده، صرف نظر از نوع آن‌ها یا تعداد آرگومان‌ها می‌شود. سینتکس متد of()

به شرح زیر است:

Array.of(element0[, element1[, ...[, elementN]]])

این متد برای تولید خروجی قابل پیش‌بینی‌تری نسبت به سازنده آرایه سنتی طراحی شده است.

مثال متد of در جاوا اسکریپت

قطعه کد زیر را در نظر بگیرید:

let numbers = Array.of(3);
console.log(numbers.length); // 1
console.log(numbers[0]); // 3

در مثال فوق عدد 3

 به متد of()

ارسال شده است. حال متد of()

آرایه‌ای از عدد ایجاد می‌کند. همچنین مثال زیر هم در رابطه با متد of()

مهم است:

let chars = Array.of('A', 'B', 'C');
console.log(chars.length); // 3
console.log(chars); // ['A','B','C']

در کد فوق با ارسال «A»,«B»,«C»

 به متد of()

آرایه‌ای از ۳ رشته ایجاد خواهد شد که اندازه آن ٣ است.

متد From در جاوا اسکریپت

یکی دیگر از متدهای آرایه در جاوا اسکریپت از دسته متدهای سازنده، متد from()

است. در جاوا اسکریپت «ES5»، برای ساخت آرایه‌ای از شی آرایه مانند، معمولاً باید هر شی موجود را پیمایش کرده و آن را به آرایه‌ جدید اضافه کرد. مثال زیر برای درک این مفهوم مهم است:

function arrayFromArgs() {
    var results = [];
    for (var i = 0; i 

خروجی کد بالا به صورت زیر خواهد بود:

[ 'Apple', 'Orange', 'Banana' ]

روش دیگر، رویکردی مختصرتر شامل استفاده از متد slice()

 از Array.prototype

 به صورت قطعه کد زیر است:

function arrayFromArgs() {
    return Array.prototype.slice.call(arguments);
}
var fruits = arrayFromArgs('Apple', 'Orange', 'Banana');
console.log(fruits);

جاوا اسکریپت «ES6» راه ساده‌تری برای انجام این کار به وسیله متد from()

معرفی کرد. این متد آرایه‌ای تازه از شی آرایه مانند ایجاد می‌کند و سینتکس آن به صورت زیر است:

Array.from(target [, mapFn[, thisArg]])

در سینتکس فوق، target

 شی آرایه مانند یا شی قابل پیمایشی است که کاربر می‌‌خواهد آن را به آرایه تبدیل کند. همچنین  mapFn

 تابعی است که روی هر عنصر آرایه فراخوانی می‌شود و thisArg

 مقدار this

 را برای زمانی که تابع mapFn

اجرا می‌شود، تعیین می‌کند.

مثال متد From در جاوا اسکریپت

در زیر ٢ مثال از متد from()

در جاوا اسکریپت برای درک بهتر این متد ارائه شده است.

آموزش فریم ورک انگولار جی اس – ساخت اپلیکیشن با AngularJS
فیلم آموزش فریم ورک انگولار جی اس – ساخت اپلیکیشن با AngularJS در تم آف

کلیک کنید

١. ساخت آرایه از شی آرایه مانند با متد from

قطعه کد زیر  نحوه ساخت آرایه از شی آرایه مانند با متد from()

را نشان می‌دهد:

function arrayFromArgs() {
    return Array.from(arguments);
}

console.log(arrayFromArgs(1, 'A'));

خروجی به صورت زیر است:

[ 1, 'A' ]

در مثال فوق، آرایه‌ای از آرگومان‌های تابع arrayFromArgs()

 ایجاد و بازگردانده شده است.

٢. استفاده از متد From با تابع Map

متد from()

قابلیت پذیرش تابع فراخوانی را دارد و به کاربر امکان می‌دهد تابع map

 را روی هر عنصر آرایه در حال ایجاد اجرا کند. مثال زیر در رابطه با این موضوع ارائه شده است.

function addOne() {
    return Array.from(arguments, x => x + 1);
}
console.log(addOne(1, 2, 3));

خروجی به صورت زیر خواهد بود:

[ 2, 3, 4 ]

در مثال فوق، هر آرگومان تابع addOne()

یک عدد افزایش یافته و نتیجه به آرایه جدید اضافه شده است.

مسطح کردن آرایه ها با متدهای آرایه در جاوا اسکریپت

نوع دیگری از متدهای آرایه در جاوا اسکریپت، متدهایی برای مسطح کردن آرایه‌ها در جاوا اسکریپت هستند. ٢ تا از مهم‌ترین این متدها، متدهای flat()

و flatMap()

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

آموزش ویو جی اس – فریم ورک Vue.js در جاوا اسکریپت JavaScript
فیلم آموزش ویو جی اس – فریم ورک Vue.js در جاوا اسکریپت JavaScript در تم آف

کلیک کنید

متد Flat در جاوا اسکریپت

متد flat()

در «ES2019» معرفی شد. این متد به کاربر یا برنامه‌ نویس اجازه می‌دهد تا با الحاق همه عناصر زیرآرایه به صورت بازگشتی تا عمقی مشخص، آرایه‌ای جدید ایجاد کند. سیتنکس این متد به صورت زیر است:

let newArray = arrayObject.flat([depth])

پارامتر depth

اختیاری بوده و مشخص می‌کند که متد چقدر باید ساختار آرایه را مسطح کند. این پارامتر به طور پیش‌فرض روی 1

 تنظیم شده است. در زیر مثالی آورده شده که نشان می‌دهد چگونه آرایه‌ای از اعداد با این متد مسطح می‌شود:

const numbers = [1, 2, [3, 4, 5]];
const flatNumbers = numbers.flat();

console.log(flatNumbers);

خروجی مثال فوق به صورت زیر است:

[1, 2, 3, 4, 5]

در مثال فوق، از آنجایی که آرگومان depth

 برای متد flat()

ارائه نشده است، از مقدار پیش‌فرض 1

 استفاده خواهد کرد.  توجه به این نکته مهم است که متد flat()

آرایه جدیدی ایجاد می‌کند و آرایه اصلی را تغییر نمی‌دهد. برای مثال دستور زیر برای آرایه فوق، آرایه اصلی را بازمی‌گرداند.

console.log(numbers);

خروجی کد فوق به صورت زیر است:

[ 1, 2, [ 3, 4, 5 ] ]

هنگامی که کاربر در مورد depth

مطمئن نباشد، می‌تواند Infinity

 را به عنوان آرگومان depth

ارسال کند تا به صورت بازگشتی همه عناصر زیرآرایه‌ها به آرایه جدید الحاق شوند. مثال زیر برای درک این مفهوم مهم است:

const numbers = [1, 2, [3, 4, 5, [6, 7, [8, 9]]]];
const flatNumbers = numbers.flat(Infinity);

console.log(flatNumbers);

اگر یک آرایه حاوی اندیس‌هایی بدون عنصر یا جاهای خالی باشد، می‌توان از متد flat()

برای حذف آن‌ها به صورت زیر استفاده کرد:

const numbers = [1, 2, , 4, , 5];
const sequence = numbers.flat();

console.log(sequence);

خروجی به صورت زیر خواهد بود:

[ 1, 2, 4, 5 ]

با اعمال متد flat()

، آرایه حاصل دیگر حاوی جاهای خالی نخواهد بود.

متد FlatMap در جاوا اسکریپت

متد flatMap()

به عنوان یکی از متدهای آرایه در جاوا اسکریپت عملکرد متد map()

 و متد flat()

را ترکیب می‌کند. این متد با استفاده از نوعی تابع نگاشت ابتدا هر عنصر آرایه اصلی را نگاشت و سپس نتایج را در آرایه تک بعدی مسطح کرده و آرایه‌ای جدید ایجاد می‌کند. سینتکس متد flatMap()

به صورت زیر است:

let newArray = arrayObject.flatMap(callback, thisArg);

متد flatMap()

دو پارامتر callback

 به عنوان پارامتری اجباری و thisArg

 را به عنوان پارامتری اختیاری می‌گیرد. callback

نوعی تابع نگاشت یا map()

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

به صورت زیر است:

function callback(currentValue [, index [, array]]);

توجه به این نکته مهم است که متد flatMap()

آرایه اصلی را تغییر نمی‌دهد. در عوض، آرایه جدیدی را با عناصر نگاشت شده و مسطح بازمی‌گرادند.

آموزش مقدماتی کتابخانه ReactJS در جاوا اسکریپت
فیلم آموزش مقدماتی کتابخانه ReactJS در جاوا اسکریپت در تم آف

کلیک کنید

مثال متد FlatMap در جاوا اسکریپت

در زیر مثالی از متد flatMap()

در جاوا اسکریپت برای درک بهتر این متد ارائه شده است. مثالی که زده شده به منظور ایجاد کلمات از جملات بیان شده است. فرض می‌شود که آرایه زیر در دسترس قرار دارد:

let sentences = ["JavaScript Array flatMap()", " ", "is", " ", "Awesome"];

تابع map() در قطعه کد زیر، کلمات جمله داده شده را تقسیم می‌کند:

let words = sentences.map(s => s.split(' '));

console.log(words);

خروجی به‌صورت زیر خواهد بود:

[

    [ 'JavaScript', 'Array', 'flatMap()' ],

    [ ' ' ],

    [ 'is' ],

    [ ' ' ],

    [ 'Awesome' ]

]

نتیجه قطعه کد بالا آرایه‌ای از آرایه‌های تودرتو است که با کلمات پر شده‌اند. حال به منظور مسطح کردن نتیجه، می‌توان از متد flat()

روی نتیجه متد map()

استفاده کرد، ولی در این گونه موارد، استفاده از متد flatMap()

آسان‌تر و سینتکسی مختصرتر دارد. متد flatMap()

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

let sentences = [

    "JavaScript Array flatMap()",

    " ",

    "is",

    " ",

    "Awesome"

];


let words = sentences.flatMap(s => s.split(' '));

console.log(words);

خروجی مثال فوق به‌ صورت زیر خواهد بود:

[ 'JavaScript', 'Array', 'flatMap()', '', '', 'is', '', '', 'Awesome' ]

 متدهای الحاق آرایه به رشته در جاوا اسکریپت

یکی دیگر از متدهای آرایه در جاوا اسکریپت که کاربردهای نسبتاً فراوانی دارد، متدهای الحاق آرایه به رشته هستند که در این بخش از آموزش متدهای آرایه در Javascript به آن خواهیم پرداخت. متدی که برای این هدف استفاده می‌شود، متد join()

است که در ادامه مورد بررسی قرار خواهد گرفت.

مجموعه آموزش طراحی و برنامه ‌نویسی سایت
فیلم مجموعه آموزش طراحی و برنامه ‌نویسی سایت در تم آف

کلیک کنید

متد Join در جاوا اسکریپت

متد join()

در جاوا اسکریپت برای الحاق تمام عناصر آرایه به رشته استفاده می‌شود و رشته حاصل را برمی‌گرداند. این متد به کاربر امکان می‌دهد نوعی «جدا کننده» (Separator) اختیاری را مشخص کند که برای جدا کردن هر جفت از عناصر مجاور در رشته حاصل استفاده می‌شود. اگر جدا کننده‌ای ارائه نشده باشد، از کاما به عنوان جدا کننده پیش‌فرض استفاده خواهد شد. سینتکس متد join()

در جاوا اسکریپت به‌صورت زیر است:

array.join(separator);

array آرایه‌ای است که متد join()

بر روی آن فراخوانی می‌شود. همچنین separator

 پارامتری اختیاری است که رشته مورد استفاده برای جداسازی عناصر در رشته حاصل را مشخص می‌کند. اگر این پارامتر ارائه نشده باشد، از کاما به عنوان جداکننده استفاده می‌شود.

متد Join در جاوا اسکریپت

توجه به این نکته مهم است که متد join()

آرایه اصلی را تغییر نمی‌دهد و فقط رشته‌ای جدید را برمی‌گرداند. در اینجا ٢ نمونه از استفاده از متد join()

آورده شده است:

١. الحاق به کلاس های CSS

کد زیر نحوه پیوستن یا الحاق متد join()

به کلاس‌های «CSS» را نشان می‌دهد:

const cssClsses = ['btn', 'btn-primary', 'btn-active'];

const btnClass = cssClasses.join(' ');

console.log(btnClass);

خروجی به‌صورت زیر خواهد بود:

btn btn-primary btn-active

در مثال فوق، آرایه cssClasses

فهرستی از کلاس‌های CSS را در خود نگه می‌دارد. متد join()

برای پیوستن تمام عناصر آرایه cssClasses

به رشته استفاده می‌شود، جایی که هر کلاس با فاصله از هم جدا شده‌اند.

٢. جایگزین کردن فاصله‌ ها با خط تیره در رشته

مثال زیر برای متد join()

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

const title = 'JavaScript array join example';

const url = title.split(' ').join('-').toLowerCase();

console.log(url);

خروجی مثال فوق به‌صورت زیر است:

javascript-array-join-example

در مثال فوق، متد split()

 ابتدا برای تقسیم رشته به آرایه‌ای از کلمات بر اساس فاصله استفاده می‌شود. سپس، از متد join()

برای الحاق تمام کلمات موجود در آرایه در یک رشته، با خط فاصله به عنوان جداکننده استفاده می‌شود. در نهایت، رشته به دست آمده با استفاده از متد toLowerCase()

 به حروف کوچک تبدیل می‌شود. مثال‌های فوق نشان می‌دهند که چگونه می‌توان از متد join()

برای دست‌کاری رشته‌ها و الحاق عناصر آرایه به رشته استفاده کرد.

متدهای آرایه در جاوا اسکریپت برای عملیات پیشرفته

برخی از متدهای آرایه در جاوا اسکریپت به منظور انجام عملیات پیشرفته استفاده می‌شوند. ٢ تا از مهم‌ترین این متدهای آرایه در جاوا اسکریپت، متدهای «Destructuring» و «Spread operator» هستند که در ادامه مورد بررسی قرار خواهند گرفت.

آموزش جاوا اسکریپت JavaScript
فیلم آموزش جاوا اسکریپت JavaScript در تم آف

کلیک کنید

متد Destructuring در جاوا اسکریپت

تخریب یا تجزیه آرایه جاوا اسکریپت که نام «Destructuring» از آن یاد می‌کنند نوعی ویژگی در جاوا اسکریپت محسوب می‌شود که در ECMAScript 2015 (ES6) معرفی شده است و به کاربر امکان می‌دهد عناصر را از آرایه استخراج و آن‌ها را به روشی مختصر و شهودی به متغیرها اختصاص دهد. این متد آرایه در جاوا اسکریپت رویکردی کارآمدتر و گویاتر برای دسترسی و کار با عناصر آرایه ارائه می‌دهد.

برای انجام تجزیه یا تخریب آرایه، از براکت‌های مربع []

 در سمت چپ عبارت «انتساب» ( =

 ) استفاده می‌شود و متغیرهایی را که مقادیر را از آرایه دریافت می‌کنند در آن مشخص خواهند شد. تعداد متغیرها باید با تعداد عناصر آرایه‌ای که در حال تجزیه است مطابقت داشته باشد. سینتکس این متد در آرایه به صورت زیر است:

let [variable1, variable2, ...] = array;

variable1

 ، variable2

 و غیره متغیرهایی هستند که مقادیر آرایه در آن‌ها تخصیص داده می‌شود. همچنین array

 آرایه‌ای است که کاربر می‌خواهد مقادیر را از آن استخراج کند.

مثال متد Destructuring در جاوا اسکریپت

در این قسمت چند مثال را بررسی می‌کنیم تا بفهمیم Destructuring چگونه کار می‌کند.

۱. تجزیه آرایه با Destructuring

فرض می‌شود که آرایه پایه با نام scores

 به صورت زیر در دسترس است:

let scores = [70, 80, 90];
let [x, y, z] = scores;

console.log(x); // 70
console.log(y); // 80
console.log(z); // 90

در مثال فوق، مقادیر آرایه scores

با استفاده از Destructuring

 آرایه به متغیرهای x

 ، y

 و z

 نسبت داده می‌شوند. هر متغیر عنصر مربوطه را از آرایه دریافت می‌کند.

٢. نادیده گرفتن عناصر

قطعه کد بالا این بار به صورت زیر تغییر می‌کند.

let scores = [70, 80, 90, 100];
let [x, , z] = scores;

console.log(x); // 70
console.log(z); // 90

با گذاشتن فضای خالی می‌توان عناصری را که به آن‌ها نیازی نیست نادیده گرفت. در کد بالا عنصر دوم حذف می‌شود و تنها عنصر اول و سوم به متغیرهای x

و z

اختصاص می‌یابد.

آموزش پروژه محور جاوا اسکریپت – پیاده سازی سبد خرید فروشگاهی با JavaScript
فیلم آموزش پروژه محور جاوا اسکریپت – پیاده سازی سبد خرید فروشگاهی با JavaScript در تم آف

کلیک کنید

٣. مقادیر پیش فرض

حال فرض می‌شود که قطعه کد بالا به صورت زیر تغییر یابد:

let scores = [70, 80];
let [x, y, z = 0] = scores;

console.log(x); // 70
console.log(y); // 80
console.log(z); // 0

در صورتی که عنصر مربوطه در آرایه تعریف نشده باشد، می‌توان مقادیر پیش‌فرض را برای متغیرها تنظیم کرد. در مثال فوق، از آنجایی که آرایه عنصر سومی ندارد، متغیر z

مقدار پیش‌فرض 0

 را می‌گیرد.

متد Spread Operator در جاوا اسکریپت

یکی دیگر از متدهای آرایه در جاوا اسکریپت برای عملیات پیشرفته، متد spread operator

 است. عملگر گسترش یا spread

 در جاوا اسکریپت که با سه نقطه (

 ) نشان داده می‌شود، نوعی ویژگی به حساب می‌آید که در ECMAScript 2015 (ES6) معرفی شده است. spread

این امکان را به کاربر می‌دهد تا عناصر شی قابل پیمایش یا تکرارپذیر، مانند آرایه یا رشته را در زمینه‌های مختلف گسترش دهد. عملگر spread

متدی مختصر و قدرتمند برای دستکاری آرایه‌ها و اشیا در جاوا اسکریپت ارائه می‌دهد. در ادامه چند مثال برای موارد مختلف استفاده از اپراتور spread

آورده شده است.

مطلب پیشنهادی:

5 کاربرد عملگر اسپرد (Spread) در ES6 — راهنمای کاربردی

شروع مطالعه

spread در آرایه ها

در مثال زیر، عملگر spread (…)

 برای پخش یا گسترش عناصر آرایه odd

 در آرایه combined

 استفاده می‌شود. این متد آرایه به طور موثر آرایه odd

را بسط داده و عناصر آن را به صورت جداگانه در آرایه combined

وارد می‌کند.

const odd = [1, 3, 5];
const combined = [2, 4, 6, ...odd];
console.log(combined);

خروجی به صورت زیر است:

const odd = [1, 3, 5];
const combined = [2, 4, 6, ...odd];
console.log(combined);

spread در آرگومان های تابع

سناریوی دیگر استفاده از spread

در آرگومان‌های تابع است که مثال زیر این موضوع را نشان می‌دهد:

function add(a, b, c) {
  return a + b + c;
}

const numbers = [1, 2, 3];
const sum = add(...numbers);
console.log(sum);

خروجی این مثال به صورت زیر است:

6

در مثال فوق هنگام فراخوانی تابع add

 از عملگر spread

استفاده می‌شود. متد spread

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

Spread Operator در جاوا اسکریپت

spread در ایجاد آرایه

سناریوی دیگر در استفاده از spread

به منظور ایجاد آرایه است که در مثال زیر به شرح بیشتر این موضوع پرداخته‌ایم.

const arr1 = [1, 2, 3];
const arr2 = [...arr1, 4, 5, 6];
console.log(arr2);

خروجی کد بالا به صورت زیر است:

[1, 2, 3, 4, 5, 6]

در مثال بالا از عملگر spread

برای ایجاد یک آرایه جدید arr2 استفاده شده است. این متد عناصر arr1 را پخش می‌کند و آن‌ها را با عناصر اضافی ترکیب خواهد کرد. این رویکرد روشی مختصر برای به هم پیوستن آرایه‌ها ارائه می‌دهد.

آموزش کاربردی HTML5، CSS3 و jQuery در طراحی وب – بخش یکم
فیلم آموزش کاربردی HTML5، CSS3 و jQuery در طراحی وب – بخش یکم در تم آف

کلیک کنید

عملگر spread

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

نکته: در نسخه‌‌های جدیدتر جاوا اسکریپت «ES2018 به بعد»، عملگر spread

را می‌توان با اشیا نیز استفاده کرد. این متد جفت‌های «کلید-مقدار» را پخش کرده و آن‌ها را با ویژگی‌های اضافی ترکیب می‌کند. این عمل به عنوان گسترش اشیا شناخته می‌شود و راهی آسان را برای ایجاد اشیا جدید بر اساس موارد موجود ارائه می‌دهد.

متدهای دسترسی به عناصر در جاوا اسکریپت

از دیگر متدهای آرایه در جاوا اسکریپت می‌توان به متدهای دسترسی به عناصر اشاره کرد که در این میان، متد at()

از مهم‌ترین آن‌ها محسوب می‌شود. در ادامه، سینتکس و مفهوم متد at()

در جاوا اسکریپت مورد بررسی قرار خواهد گرفت.

آموزش JavaScript ES6 جاوا اسکریپت
فیلم آموزش JavaScript ES6 جاوا اسکریپت در تم آف

کلیک کنید

متد At در جاوا اسکریپت

متد at()

 از جدیدترین متدهای آرایه جاوا اسکریپت محسوب می‌شود که در ECMAScript 2022  یا ES2022 معرفی شده است. این متد راه‌حلی جایگزین را برای دسترسی به عناصر در یک آرایه فراهم می‌کند که به کاربر امکان می‌دهد از اندیس‌های مثبت و منفی استفاده کند. سینتکس این متد در جاوا اسکریپت به صورت زیر است:

array.at(index)

در سینتکس بالا، array

 آرایه‌ای است که متد at()

بر روی آن فراخوانی می‌شود. index

 هم اندیس عنصری است که کاربر می‌خواهد به آن دسترسی داشته باشد. اندیس می‌تواند یک عدد صحیح مثبت یا منفی باشد. متد at()

مشابه دسترسی به عناصر با استفاده از «براکت» ( []

 ) عمل می‌کند اما با قابلیت‌های اضافی پشتیبانی از اندیس‌های منفی، که ویژگی بسیار قابل توجهی به حساب می‌آید. برای اندیس‌های صفر یا مثبت، متد at()

با []

یکسان عمل می‌کند.

برای اندیس‌های منفی، متد نام برده عناصر را از انتهای آرایه بازیابی می‌کند. به عنوان مثال، arr.at(-1)

 آخرین عنصر را بازیابی خواهد کرد، در حالی که arr.at(-2)

 عنصر ماقبل آخر را واکشی می‌کند.

مثال متد at در جاوا اسکریپت

در ادامه مثالی برای نشان دادن استفاده از متد at()

به عنوان یکی از متدهای آرایه در جاوا اسکریپت برای واکشی عناصر از آرایه آورده شده است.

const scores = [5, 6, 7];

console.log(scores.at(1)); // equivalent to scores[1]

// fetch the final element
console.log(scores.at(-1)); // 7

console.log(scores.at(-1) === scores[scores.length - 1]); // true

خروجی به صورت زیر خواهد بود:

6
7
true

تصویر زیر نحوه انجام عملیات فوق را نشان می‌دهد:

متد at در جاوا اسکریپت

متدهای آرایه چند بعدی در جاوا اسکریپت

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

مجموعه آموزش جاوا اسکریپت (JavaScript)
فیلم مجموعه آموزش جاوا اسکریپت (JavaScript) در تم آف

کلیک کنید

یکی از مهم‌ترین متدهای آرایه در جاوا اسکریپت برای کار با آرایه‌های چند بعدی، متد «Multidimensional Array» است که در ادامه این مطلب آموزش داده خواهد شد.

آرایه های چند بعدی در جاوا اسکریپت

متد Multidimensional Array در جاوا اسکریپت

اگرچه جاوا اسکریپت در حالت عادی از آرایه‌های چند بعدی پشتیبانی نمی‌کند، اما می‌توان آن‌ها را با ایجاد آرایه‌ای از آرایه‌ها شبیه‌سازی کرد و به طور موثر به عملکرد آرایه چند بعدی دست یافت. ساده‌ترین روش برای ایجاد آرایه چند بعدی با استفاده از نمادگذاری تحت اللفظی آرایه است. ایجاد آرایه چند بعدی خالی از همان سینتکس ایجاد آرایه تک بعدی استفاده می‌کند که به صورت زیر است:

let activities = [];

در زیر نمونه‌ای از آرایه ۲ بعدی به نام activities

 آورده شده است:

let activities = [
    ['Work', 9],
    ['Eat', 1],
    ['Commute', 2],
    ['Play Game', 1],
    ['Sleep', 7]
];

در آرایه فوق بُعد اول نوع فعالیت و بُعد دوم تعداد ساعات صرف شده برای آن فعالیت در روز را نشان می‌دهد. با استفاده از متد console.table()

 می‌توان آرایه activities

را در کنسول نشان داد که دستور آن به صورت زیر است:

console.table(activities);

خروجی دستور بالا به صورت زیر خواهد بود:

┌─────────┬─────────────┬───┐
│ (index) │      0      │ 1 │
├─────────┼─────────────┼───┤
│    0    │   'Work'    │ 9 │
│    1    │    'Eat'    │ 1 │
│    2    │  'Commute'  │ 2 │
│    3    │ 'Play Game' │ 1 │
│    4    │   'Sleep'   │ 7 │

ستون ( index

 ) اندیس‌های آرایه داخلی (درونی) را نشان می‌دهد. برای دسترسی به عنصر در آرایه چند بعدی، ابتدا از براکت‌های []

 برای دسترسی به عنصری از آرایه خارجی (بیرونی) استفاده می‌شود که نوعی آرایه داخلی را برمی‌گرداند. سپس از مجموعه دیگری از براکت‌های مربع برای دسترسی به عنصر درون آرایه داخلی استفاده خواهد شد. در اینجا نمونه‌ای از دسترسی به عنصر دوم از اولین آرایه داخلی در آرایه activities

آورده شده است.

console.log(activities[0][1]); // 9

دستور بالا عدد 9

را برمی‌گرداند که تعداد ساعت‌های صرف شده برای work

 است.

آموزش برنامه نویسی جاوا اسکریپت در ادوبی انیمیت Adobe Animate
فیلم آموزش برنامه نویسی جاوا اسکریپت در ادوبی انیمیت Adobe Animate در تم آف

کلیک کنید

افزودن عنصر به آرایه چند بعدی

دستکاری عناصر در یک آرایه چند بعدی در جاوا اسکریپت می‌تواند با استفاده از متدهای آرایه مانند push()

 و splice()

انجام شود. به عنوان مثال، برای الحاق عنصری جدید به انتهای آرایه چند بعدی، می‌توان از متد push()

 به صورت زیر استفاده کرد:

activities.push(['Study',2]);

console.table(activities);

خروجی در کنسول به صورت زیر خواهد بود:

┌─────────┬─────────────┬───┐
│ (index) │      0      │ 1 │
├─────────┼─────────────┼───┤
│    0    │   'Work'    │ 9 │
│    1    │    'Eat'    │ 1 │
│    2    │  'Commute'  │ 2 │
│    3    │ 'Play Game' │ 1 │
│    4    │   'Sleep'   │ 7 │
│    5    │   'Study'   │ 2 │
└─────────┴─────────────┴───┘

همچنین از متد splice()

می‌توان برای درج عنصری در موقعیتی خاص در آرایه استفاده کرد. در اینجا نحوه اضافه کردن عنصری به موقعیت دوم آرایه activities

آمده است:

activities.splice(1, 0, ['Programming', 2]);

console.table(activities);

خروجی کد بالا به صورت زیر خواهد بود:

┌─────────┬───────────────┬───┐
│ (index) │       0       │ 1 │
├─────────┼───────────────┼───┤
│    0    │    'Work'     │ 9 │
│    1    │ 'Programming' │ 2 │
│    2    │     'Eat'     │ 1 │
│    3    │   'Commute'   │ 2 │
│    4    │  'Play Game'  │ 1 │
│    5    │    'Sleep'    │ 7 │
│    6    │    'Study'    │ 2 │
└─────────┴───────────────┴───┘

همچنین می‌توان محاسباتی را روی آرایه چند بعدی انجام داد و نتایج را به عنوان عنصری جدید در آرایه‌های داخلی اضافه کرد. در مثال زیر، درصد ساعات صرف شده برای هر فعالیت محاسبه شده و درصد به آرایه مربوطه اضافه شده است:

activities.forEach(activity => {
    let percentage = ((activity[1] / 24) * 100).toFixed();
    activity[2] = percentage + '%';
});

console.table(activities);

خروجی کد بالا به صورت زیر خواهد بود.

┌─────────┬───────────────┬───┬───────┐
│ (index) │       0       │ 1 │   2   │
├─────────┼───────────────┼───┼───────┤
│    0    │    'Work'     │ 9 │ '38%' │
│    1    │ 'Programming' │ 2 │ '8%'  │
│    2    │     'Eat'     │ 1 │ '4%'  │
│    3    │   'Commute'   │ 2 │ '8%'  │
│    4    │  'Play Game'  │ 1 │ '4%'  │
│    5    │    'Sleep'    │ 7 │ '29%' │
│    6    │    'Study'    │ 2 │ '8%'  │
└─────────┴───────────────┴───┴───────┘

حذف عناصر از آرایه چند بعدی

برای حذف عنصر از آرایه چند بعدی در جاوا اسکریپت، می‌توان از متد   pop()

 یا splice()

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

را حذف کند باید کدی مانند کد زیر بنویسد:

activities.pop();

console.table(activities);

خروجی به صورت زیر خواهد بود:

┌─────────┬───────────────┬───┬───────┐
│ (index) │       0       │ 1 │   2   │
├─────────┼───────────────┼───┼───────┤
│    0    │    'Work'     │ 9 │ '38%' │
│    1    │ 'Programming' │ 2 │ '8%'  │
│    2    │     'Eat'     │ 1 │ '4%'  │
│    3    │   'Commute'   │ 2 │ '8%'  │
│    4    │  'Play Game'  │ 1 │ '4%'  │
│    5    │    'Sleep'    │ 7 │ '29%' │
└─────────┴───────────────┴───┴───────┘

متد pop()

همچنین می‌تواند برای حذف عناصر از آرایه‌های داخلی آرایه چند بعدی هم استفاده شود. در کد زیر نحوه حذف عنصر درصد یا percentage

 از هر آرایه داخلی در آرایه activities

آمده است.

activities.forEach((activity) => {
    activity.pop(2);
});

console.table(activities);

خروجی کد بالا به صورت زیر خواهد بود:

┌─────────┬───────────────┬───┐
│ (index) │       0       │ 1 │
├─────────┼───────────────┼───┤
│    0    │    'Work'     │ 9 │
│    1    │ 'Programming' │ 2 │
│    2    │     'Eat'     │ 1 │
│    3    │   'Commute'   │ 2 │
│    4    │  'Play Game'  │ 1 │
│    5    │    'Sleep'    │ 7 │
└─────────┴───────────────┴───┘

نادیده گرفتن عناصر آرایه چند بعدی

هنگامی که کاربر نیاز به نادیده گرفتن عناصر آرایه چند بعدی داشته باشد، می‌تواند از حلقه for

 تودرتو مانند کدهای زیر برای این هدف استفاده کند:

for (let i = 0; i 

در مثال فوق، حلقه بیرونی عناصر آرایه بیرونی را نادیده می‌گیرد در حالی که حلقه تودرتو عناصر آرایه داخلی را نادیده خواهد گرفت. از طرف دیگر، می‌توان از متد forEach()

 دو بار برای انجام همین کار به صورت زیر استفاده کرد:

activities.forEach((activity) => {
    activity.forEach((data) => {
        console.log(data);
    });
});

خروجی به صورت زیر خواهد بود:

Work
9
Eat
1
Commute
2
Play Game
1
Sleep
7
Study
2

سخن پایانی

برای کار با آرایه‌ها در جاوا اسکریپت، متدهای متنوع و گسترده‌ای تعریف شده‌اند که هر کدام از آن‌ها کاربرد خاص خودشان را دارند. درک کار با متدهای آرایه در Javascript به برنامه‌نویسان کمک می‌کند که در سناریوهای مختلف به عنوان راهی میانبُر از آن‌ها به نحو احسن استفاده کنند.

آموزش جاوا اسکریپت JavaScript
فیلم آموزش جاوا اسکریپت JavaScript در تم آف

کلیک کنید

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.