متدهای پیمایش آرایه

از موتو کد، دانشنامهٔ برنامه‌نویسی

متدهای پیمایش آرایه بر روی هر یک از آیتم‌های آرایه عمل می‌کنند. [۱]

متد Array.forEach()[ویرایش | ویرایش]

متد forEach() یک تابع را برای هر یک از عناصر آرایه فراخوانی می‌کند.

مثال[ویرایش | ویرایش]

var txt = "";
var numbers = [45, 4, 9, 16, 25];
numbers.forEach(myFunction);

function myFunction(value, index, array) {
  txt = txt + value + "<br>";
}


مشاهدهٔ نتیجه


توجه داشته باشید که تابع ۳ آرگومان دارد:

  • مقدار عنصر
  • اندیس عنصر
  • خود آرایه

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

مثال[ویرایش | ویرایش]

var txt = "";
var numbers = [45, 4, 9, 16, 25];
numbers.forEach(myFunction);

function myFunction(value) {
  txt = txt + value + "<br>";
}


مشاهدهٔ نتیجه


متد Array.forEach() در تمامی مرورگرها جز مرورگر اینترنت اکسپلور نسخه ۸ یا قدیمی‌تر پشتیبانی می‌شود.

Chrome.gif Edge.gif Firefox.gif Safari.gif Opera.gif
بله ۹٫۰ بله بله بله


متد array.map()[ویرایش | ویرایش]

متد map یک آرایه جدید با قابلیت اجرای یک تابع روی هر عنصر آرایه ایجاد می‌کند.

متد map تابع را بدون مقدار برای هر عنصر آرایه اجرا نمی‌کند.

متد map آرایه اصلی را تغییر نمی‌دهد.

مثال زیر، هر عنصر آرایه را در عدد ۲ ضرب می‌کند:

مثال[ویرایش | ویرایش]

var numbers1 = [45, 4, 9, 16, 25];
var numbers2 = numbers1.map(myFunction);

function myFunction(value, index, array) {
  return value * 2;
}


مشاهدهٔ نتیجه


توجه داشته باشید که تابع ۳ آرگومان ورودی دارد:

  • مقدار عنصر
  • اندیس عنصر
  • خود آرایه

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

مثال[ویرایش | ویرایش]

var numbers1 = [45, 4, 9, 16, 25];
var numbers2 = numbers1.map(myFunction);

function myFunction(value) {
  return value * 2;
}


مشاهدهٔ نتیجه


متد Array.map() در تمامی مرورگرها جز مرورگر اینترنت اکسپلور نسخه ۸ یا قدیمی‌تر پشتیبانی می‌شود.

Chrome.gif Edge.gif Firefox.gif Safari.gif Opera.gif
بله ۹٫۰ بله بله بله

متد Array.filter()[ویرایش | ویرایش]

متد filter() یک آرایه جدید را با عناصر آرایه با یک شرط ایجاد می‌کند.

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

مثال[ویرایش | ویرایش]

var numbers = [45, 4, 9, 16, 25];
var over18 = numbers.filter(myFunction);

function myFunction(value, index, array) {
  return value > 18;
}


مشاهدهٔ نتیجه


توجه داشته باشید که تابع ۳ آرگومان ورودی دارد:

  • مقدار عنصر
  • اندیس عنصر
  • خود آرایه

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

مثال[ویرایش | ویرایش]

var numbers = [45, 4, 9, 16, 25];
var over18 = numbers.filter(myFunction);

function myFunction(value) {
  return value > 18;
}


مشاهدهٔ نتیجه


متد Array.filter() در تمامی مرورگرها جز مرورگر اینترنت اکسپلور نسخه ۸ یا قدیمی‌تر پشتیبانی می‌شود.

Chrome.gif Edge.gif Firefox.gif Safari.gif Opera.gif
بله ۹٫۰ بله بله بله

متد Array.reduce()[ویرایش | ویرایش]

متد reduce() یک تابع را بر روی هر عنصر از آرایه اجرا می‌کند تا آن را به یک تک مقدار (ساده کند) تبدیل کند.

متد reduce() از سمت چپ به راست در آرایه کار می‌کنید. شما می‌توانید کاربرد متد reduceRight() را هم ببینید.

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

مثال زیر، مجموع تمامی عدد درون آرایه را پیدا می‌کند:

مثال[ویرایش | ویرایش]

var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduce(myFunction);

function myFunction(total, value, index, array) {
  return total + value;
}


مشاهدهٔ نتیجه


توجه داشته باشید که این تابع ۴ آرگومان دارد:

  • مجموع (مقدار اصلی، مقدار بازگشتی قبلی)
  • مقدار عنصر
  • اندیس عنصر
  • خود آرایه

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

مثال[ویرایش | ویرایش]

var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduce(myFunction);

function myFunction(total, value) {
  return total + value;
}


مشاهدهٔ نتیجه


متد reduce() می‌تواند یک مقدار اصلی یا initial را به عنوان پارامتر ورودی قبول کند:

مثال[ویرایش | ویرایش]

var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduce(myFunction, 100);

function myFunction(total, value) {
  return total + value;
}


مشاهدهٔ نتیجه


متد Array.reduce() در تمامی مرورگرها به جز اینترنت اکسپلور نسخه ۸ یا نسخه‌های قدیمی‌تر پشتیبانی می‌شود.

Chrome.gif Edge.gif Firefox.gif Safari.gif Opera.gif
بله ۹٫۰ بله بله بله


متد Array.reduceRight()[ویرایش | ویرایش]

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

متد reduceRight() از سمت راست به چپ در آرایه کار می‌کند. شما می‌توانید کارایی متد reduce() را هم ببینید.

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

این مثال مجموع تمامی اعداد موجود در یک آرایه را پیدا می‌کند:

مثال[ویرایش | ویرایش]

var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduceRight(myFunction);

function myFunction(total, value, index, array) {
  return total + value;
}


مشاهدهٔ نتیجه


توجه داشته باشید که این تابع ۴ آرگومان دارد:

  • مجموع (مقدار اصلی / مقدار بازگشتی قبلی)
  • مقدار عنصر
  • اندیس عنصر
  • خود آرایه

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

مثال[ویرایش | ویرایش]

var numbers1 = [45, 4, 9, 16, 25];
var sum = numbers1.reduceRight(myFunction);

function myFunction(total, value) {
  return total + value;
}


مشاهدهٔ نتیجه


متد Array.reduceRight() در تمامی مرورگرها به جز اینترنت اکسپلور به جز نسخه ۸ و نسخه‌های قدیمی‌تر پشتیبانی می‌شود.

Chrome.gif Edge.gif Firefox.gif Safari.gif Opera.gif
بله ۹٫۰ بله بله بله


متدهای Array.every()[ویرایش | ویرایش]

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

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

مثال[ویرایش | ویرایش]

var numbers = [45, 4, 9, 16, 25];
var allOver18 = numbers.every(myFunction);

function myFunction(value, index, array) {
  return value > 18;
}


مشاهدهٔ نتیجه


توجه داشته باشید که این تابع ۳ آرگومان دارد:

  • مقدار عنصر
  • اندیس عنصر
  • خود آرایه

زمانی که تابع فراخوانی شده فقط از یک پارامتر (پارامتر مقدار (Value)) استفاده می‌کند، سایر پارامترها می‌تواند نوشته نشود:

مثال[ویرایش | ویرایش]

var numbers = [45, 4, 9, 16, 25];
var allOver18 = numbers.every(myFunction);

function myFunction(value) {
  return value > 18;
}


مشاهدهٔ نتیجه


متد Array.every() در تمامی مرورگرها به جز اینترنت اکسپلور به جز نسخه ۸ و نسخه‌های قدیمی‌تر پشتیبانی می‌شود.

Chrome.gif Edge.gif Firefox.gif Safari.gif Opera.gif
بله ۹٫۰ بله بله بله

متد Array.some()[ویرایش | ویرایش]

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

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

مثال[ویرایش | ویرایش]

var numbers = [45, 4, 9, 16, 25];
var someOver18 = numbers.some(myFunction);

function myFunction(value, index, array) {
  return value > 18;
}


مشاهدهٔ نتیجه


توجه داشته باشید که این تابع ۳ آرگومان دارد:

  • مقدار عنصر
  • اندیس عنصر
  • خود آرایه

متد Array.some() در تمامی مرورگرها به جز اینترنت اکسپلور به جز نسخه ۸ و نسخه‌های قدیمی‌تر پشتیبانی می‌شود.

Chrome.gif Edge.gif Firefox.gif Safari.gif Opera.gif
بله ۹٫۰ بله بله بله

متد Array.indexOf()[ویرایش | ویرایش]

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

نکته: اولین عنصر دارای اندیس صفر است، دومین عنصر دارای اندیس یک و به همین ترتیب ادامه دارد.

مثال[ویرایش | ویرایش]

var numbers = [45, 4, 9, 16, 25];
var someOver18 = numbers.some(myFunction);

function myFunction(value, index, array) {
  return value > 18;
}


مشاهدهٔ نتیجه


درون یک آرایه به دنبال عنصر "Apple" می‌گردد:

var fruits = ["Apple", "Orange", "Apple", "Mango"];
var a = fruits.indexOf("Apple");

متد Array.indexOf() در تمامی مرورگرها به جز مرورگر اینترنت اکسپلور نسخه ۸ و نسخه‌های قدیمی‌تر پشتیبانی می‌شود.

Chrome.gif Edge.gif Firefox.gif Safari.gif Opera.gif
بله ۹٫۰ بله بله بله


شیوهٔ نوشتار دستور[ویرایش | ویرایش]

array.indexOf(item, start)
Item این پارامتر اجباری است. مقداری که می‌بایست متد به دنبال آن بگردد.
Start این پارامتر اختیاری است. موقعیتی که جستجو از آن می‌بایست شروع شود. اگر مقدار منفی به این پارامتر داده شود موجب می‌شود که اندیس شماره جستجو از آخر ارایه شمارده شود و به سمت پایان آرایه عمل جستجو ادامه می‌یابد.

متد Array.indexOf() مقدار ۱- را در صورتی که عنصر مورد نظر پیدا نشود برمی‌گرداند.

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

متد Array.lastIndexOf()[ویرایش | ویرایش]

متد Array.lastIndexOf() بسیار شبیه به متد Array.indexOf() است اما این متد، اندیس آخرین عنصر متناظر را بازمی‌گرداند.

مثال[ویرایش | ویرایش]

کد زیر در یک آرایه به دنبال عنصر "Apple " می‌گردد:

var fruits = ["Apple", "Orange", "Apple", "Mango"];
var a = fruits.lastIndexOf("Apple");


مشاهدهٔ نتیجه


متد Array.lastIndexOf() در تمامی مرورگرها به جز مرورگر اینترنت اکسپلور به جز نسخه ۸ و نسخه‌های قدیمی‌تر پشتیبانی می‌شود.

Chrome.gif Edge.gif Firefox.gif Safari.gif Opera.gif
بله ۹٫۰ بله بله بله


شیوهٔ نوشتار دستور[ویرایش | ویرایش]

array.lastIndexOf(item, start)
Item این پارامتر اجباری است. مقداری که می‌بایست متد به دنبال آن بگردد.
Start این پارامتر اختیاری است. موقعیتی که جستجو از آن می‌بایست شروع شود. اگر مقدار منفی به این پارامتر داده شود موجب می‌شود که اندیس شماره جستجو از آخر ارایه شمارده شود و به سمت پایان آرایه عمل جستجو ادامه می‌یابد.

متد Array.find()[ویرایش | ویرایش]

متد find() مقدار عنصر اولی که یک شرط در آن برقرار باشد را برمی‌گرداند.

این مثال اولین عنصر (مقدار اولین عنصر) را که بزرگتر از عدد ۱۸ باشد را برمی‌گرداند:

مثال[ویرایش | ویرایش]

var numbers = [4, 9, 16, 25, 29];
var first = numbers.find(myFunction);

function myFunction(value, index, array) {
  return value > 18;
}


مشاهدهٔ نتیجه


توجه داشته باشید که این تابع ۳ آرگومان دارد:

  • مقدار عنصر
  • اندیس عنصر
  • خود آرایه

متد Array.find() مرورگرهای قدیمی پشتیبانی نمی‌شود. تمامی اولین نسخه‌های مرورگرهایی که از این قابلیت پشتیبانی می‌کنند را می‌توانید در جدول زیر ببینید.

Chrome.gif Edge.gif Firefox.gif Safari.gif Opera.gif
۴۵ ۱۲ ۲۵ ۸ ۳۲

متد Array.findIndex()[ویرایش | ویرایش]

متد findIndex() اندیس اولین عنصری را که در آن شرط برقرار باشد را برمی‌گرداند.

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

مثال[ویرایش | ویرایش]

var numbers = [4, 9, 16, 25, 29];
var first = numbers.findIndex(myFunction);

function myFunction(value, index, array) {
  return value > 18;
}


مشاهدهٔ نتیجه


توجه داشته باشید که این تابع ۳ آرگومان دارد:

  • مقدار عنصر
  • اندیس عنصر
  • خود آرایه

متد Array.findIndex() در مرورگرهای قدیمی پشتیبانی نمی‌شود. تمامی اولین نسخه‌های مرورگرهایی که از این قابلیت پشتیبانی می‌کنند را می‌توانید در جدول زیر ببینید.

Chrome.gif Edge.gif Firefox.gif Safari.gif Opera.gif
۴۵ ۱۲ ۲۵ ۸ ۳۲

منابع آموزشی[ویرایش]