JavaScript Array Iteration
توابع شیء تکرار، روی همه آیتمهای یک آرایه عمل میکنند.
()Array.forEach
تابع شیء forEach()
برای هر عنصر از آرایه یک بار تابعی را فرامیخواند.
دقت داشته باشید که در تابع نوشته شده در بالا، 3 پارامتر تعریف شده:
- value
- index
- array
که فقط از پارامتر اول آن یعنی value استفاده شده است. بنابراین تابع بالا را میتوان به صورت زیر هم نوشت:
function myFunction(value) {
txt += value + "<br>";
}
()Array.map
map()
با فراخوانی یک تابع روی تک تک عناصر آرایه، یک آرایه جدید را ایجاد میکند و آرایه اصلی را تغییر نمیدهد.
()Array.filter
filter()
یک آرایه جدید از عناصر آرایه اصلی که یک تست را پشت سر گذاشتهاند ایجاد میکند. در مثال زیر آرایهای جدید از عناصر ارایه اصلی که بزرگتر از 18 هستند ایجاد میشود.
()Array.reduce
تابع شیء reduce()
تابعی را روی همه عناصر ارایه اجرا میکند و در نهایت یک مقدار را به عنوان خروجی تولید میکند.
reduce()
آرایه اصلی را تغییر نمیدهد.
نحوه عملکرد آن از سمت چپ به طرف راست است. در مثال زیر جمع همه اعداد داخل آرایه را با استفاده از این تابع شیء پیدا میکنیم.
پارامتر اول total در تکرار اول، نقش مقدار اولیه را دارد و در تکرارهای بعدی دارای مقدار مرحله قبل است. در این مثال ابتدا مقدار آن صفر است، در تکرار دوم مقدار آن 45 و سپس در تکرارهای بعدی مقدار آن به ترتیب 49، 58، 74 و در نهایت 99 است. میتوان مقدار اولیه را به عنوان ورودی به reduce()
داد. در کد زیر مقدار اولیه 100 را به آن دادهایم، کد را اجرا و نتیجه را مشاهده نمائید.
const numbers = [45, 4, 9, 16, 25];
let sum = numbers.reduce(myFunction, 100);
function myFunction(total, value) {
return total + value;
}
اگر بخواهید نحوه عملکرد این تابع از راست به چپ باشد، به جای آن از تابع شیء Array.reduceRight()
استفاده کنید.
()Array.every
تابع شیء every()
بررسی میکند که آیا همه مقادیر آرایه تست تعریف شده را پاس میکنند یا خیر. در مثال زیر بزرگتر از 18 بودن همه مقادیر آرایه بررسی میشود.
()Array.some
تابع شیء some()
بررسی میکند که آیا بعضی از مقادیر آرایه تست تعریف شده را پاس میکنند یا خیر. در مثال زیر بزرگتر از 18 بودن بعضی از مقادیر آرایه بررسی میشود.
()Array.indexOf
تابع شیء indexOf()
در یک آرایه دنبال یک مقدار مشخص میگردد و شماره ایندکس آن را برمیگرداند. دقت داشته باشید که شماره ایندکس از صفر شروع میشود؛ به این معنی که عنصر اول دارای ایندکس صفر، عنصر دوم دارای ایندکس 2 و الی آخر.
میتوان شماره ایندکسی که میخواهیم از آنجا جستجو شروع شود را نیز به عنوان آرگومان به آن بدهیم:
array.indexOf(item, start)
اگر آیتم مورد نظر پیدا نشود، تابع شیئ Array.indexOf()
مقدار 1- را برمیگرداند و در صورتی که آیتم مورد نظر وجود داشته باشد محل اولین رخداد آن را برمیگرداند.
()Array.lastIndexOf
این تابع شیء هم همانند Array.indexOf()
عمل میکند، با این تفاوت که محل آخرین رخداد آیتم مورد نظر را برمیگرداند.
const fruits = ["Apple", "Orange", "Apple", "Mango"];
let position = fruits.lastIndexOf("Apple") + 1;
میتوان شماره ایندکسی که میخواهیم از آنجا جستجو شروع شود را نیز به عنوان آرگومان به آن بدهیم:
array.lastIndexOf(item, start)
()Array.find
تابع شیء find()
مقدار اولین عنصر از آرایه که تست تعریف شده را پاس کند، برمیگرداند.
()Array.findIndex
تابع شیء findIndex()
ایندکس اولین عنصر از آرایه که تست تعریف شده را پاس کند، برمیگرداند.
const numbers = [4, 9, 16, 25, 29];
let first = numbers.findIndex(myFunction);
function myFunction(value, index, array) {
return value > 18;
}