متدهاي تكرار در آرايه ها ، روي هر عنصر آرايه عملي انجام ميدهند.
<>متدforEach( ) آرايه، براي هر عنصر تابعي را فراخواني ميكند .
مثال ـforEach( ) آرايه
const numbers = [45, 4, 9, 16, 25]; let txt = ""; numbers.forEach(myFunction); function myFunction(value, index, array) { txt += value + "<br>"; }
توجه كنيد كه تابع داراي سه آرگومان است:
در مثال بالا فقط مقادير آرايه مورد استفاده ميگيرند، مثال فوق را بصورت زير ميتوان بازنويسي كرد.
const numbers = [45, 4, 9, 16, 25]; let txt = ""; numbers.forEach(myFunction); function myFunction(value) { txt += value + "<br>"; }
متدmap()آرايه اي را مطابق نتيجه كاري كه تابع روي عناصر آرايه انجام ميدهد، ايجاد ميكند.
متد فوق تابع را بدون مقدار عناصر آرايه اجرا نميكند.
متدmap() آرايه اصلي را تغيير نميدهد .
مثال ـ عناصرآرايه در2 ضرب وآرايه جديد ساخته مي شود.
const numbers1 = [45, 4, 9, 16, 25]; const numbers2 = numbers1.map(myFunction); function myFunction(value, index, array) { return value * 2; }
توجه كنيد كه تابع داراي سه آرگومان است:
در هنگام برگشت تابع فقط ازvalue استفاده ميشود، وindex وarray ناديده گرفته ميشوند .
مثال ـmap() با تابع فقط داراي آرگومانvalue
const numbers1 = [45, 4, 9, 16, 25]; const numbers2 = numbers1.map(myFunction); function myFunction(value) { return value * 2; }
متدflatMap() براي جاوااسكريپت درES2019 اضافه شده است .
متدflatMap()در ابتدا آرايه را براساس آرگومان تبديل وآرايه مسطح(flat) جديد ايجاد ميكند.
مثالflatMap() -
const myArr = [1, 2, 3, 4, 5,6];
const newArr = myArr.flatMap((x) => x * 2);
69.0
sep 2018 | 79.0
Jan 2020 | 62.0
se p 2018 | 12.0
sep 2018 | 56.0
Sep 2018 |
متدfilter( ) آرايه ، آرايه جديدي از عناصريكه در شرط صادق هستند ايجاد ميكند.
مثال ـ آرايه جديدي از عناصر آرايهnumbers كه مقدار عنصر بزرگتر از8 باشد، ساخته ميشود .
const numbers = [45, 4, 9, 16, 25]; const over18 = numbers.filter(myFunction); function myFunction(value, index, array) { return value > 18; }
توجه كنيد كه تابع داراي سه آرگومان است:
در هنگام برگشت تابع فقط ازvalue استفاده ميشود، وindex وarray ناديده گرفته ميشوند .
مثال ـfilter() با تابع فقط داراي آرگومانvalue
const numbers = [45, 4, 9, 16, 25]; const over18 = numbers.filter(myFunction); function myFunction(value) { return value > 18; }
متدreduce( ) تابعي را روي هرعنصر آرايه اجراكرده و درنهايت يك مقدار توليد مي نمايد. متد فوق روي آرايه از چپ براست اقدام ميكند.
متدreduce آرايه اصلي را تغيير وكاهش نمي دهد .
مثال ـ جمع عناصر آرايه باreduce()
const numbers = [45, 4, 9, 16, 25]; let sum = numbers.reduce(myFunction); function myFunction(total, value, index, array) { return total + value; }
توجه كنيد كه تابع داراي چهار آرگومان است:
در مثال بالا فقط مقادير آرايه مورد استفاده قرار ميگيرند .مثال فوق را بصورت زير ميتوان بازنويسي كرد.
مثال ـ تابع با دو آرگومانtotal, value
const numbers = [45, 4, 9, 16, 25]; let sum = numbers.reduce(myFunction); function myFunction(total, value) { return total + value; }
متدreduce( ) ميتواند داراي مقدار اوليه باشد .
مثال ـ متدreduce() با مقدار اوليه
const numbers = [45, 4, 9, 16, 25]; let sum = numbers.reduce(myFunction, 100); function myFunction(total, value) { return total + value; }
متدreduceRight( ) براي هر عنصر آرايه تابع را اجرا نموده ودر نهايت يك مقدار توليد وبرگشت مي دهد .حركت روي عناصر آرايه ازراست به چپ ميباشد .اين متد همچنين آرايه اصلي را تغيير نمي دهد.
مثال ـ پيداكردن جمع عناصر آرايه باreduceRight()
const numbers = [45, 4, 9, 16, 25]; let sum = numbers.reduceRight(myFunction); function myFunction(total, value, index, array) { return total + value; }
توجه كنيد كه تابع داراي چهار آرگومان است:
در مثال بالا تابع از پارامترهايindex وarray استفاده نكرده است .آنرا ميتوان مطابق زير بازنويسي كزد.
مثال ـ تابع با دو پارامتر
const numbers = [45, 4, 9, 16, 25]; let sum = numbers.reduceRight(myFunction); function myFunction(total, value) { return total + value; }
متدevery( ) همه عناصر آرايه كنترل كرده كه شامل تست هستند يا خير.
مثال ـ عناصر آرايه درصورتيكه همه بزرگتر18 باشند، پيغامtrue برگشت ميشود .
const numbers = [45, 4, 9, 16, 25]; let allOver18 = numbers.every(myFunction); function myFunction(value, index, array) { return value > 18; }
توجه كنيد كه تابع داراي سه آرگومان است:
هنگاميكه يك تابع فراخوان فقط از اولين پارامتر(value) استفاده ميكند، ميتوان مابقي پارامترها را حذف كرد .مطابق زير:
مثال ـ استفاده ازتابع فقط باvalue
const numbers = [45, 4, 9, 16, 25]; let allOver18 = numbers.every(myFunction); function myFunction(value) { return value > 18; }
متدsome( )كنترل ميكند كه بعضي از عناصر تست را صادق باشند .
مثال ـ تست بزرگتر از18 براي بعضي ازعناصر آرايه
const numbers = [45, 4, 9, 16, 25]; let someOver18 = numbers.some(myFunction); function myFunction(value, index, array) { return value > 18; }
توجه كنيد كه تابع داراي سه آرگومان است:
متدindexOf( ) جستجوي عنصر درآرايه با مقدار مشخص كه انديس آنرا برگشت ميدهد.
توجه ـ اولين عنصر انديس0 ودومين عنصرانديس 2 و الي آخر
مثال ـ جستجوي يك آرايه براي مقدار"Apple"برگشت موقعيت عنصر
const fruits = ["Apple", "Orange", "Apple", "Mango"]; let position = fruits.indexOf("Apple") + 1;
نحوي كلي متدindexOf( )
در متدArray.indexOf( ) اگر عنصر پيدا نشود-1 برگشت ميشود.
اگر مورد بيش از يكباروجود داشته باشد، موقعيت اولين رخداد را برميگرداند.
Array.lastindexOf( )مشابه با Array.indexOf( ) است .اما آن موقعيت آخرين وقوع تطبيق را برگشت ميدهد.
مثال ـ جستجو براي عنصر"Apple"در آرايه
const fruits = ["Apple", "Orange", "Apple", "Mango"]; let position = fruits.lastIndexOf("Apple") + 1;
متدfind( ) مقدار اولين عنصريكه با شرط تابع منطبق باشد، برگشت ميدهد.
مثال ـ اولي عنصريكه مقدارش بزرگتر18 باشد، برگشت ميدهد .
const numbers = [4, 9, 16, 25, 29]; let first = numbers.find(myFunction); function myFunction(value, index, array) { return value > 18; }
توجه كنيد كه تابع داراي سه آرگومان است:
متدfind( ) از امكاناتES6 در جاوااسكريپت2019 است.
آن بوسيله مرورگرهاي مدرن پشتيباني ميشود.
Yes | Yes | Yes | Yes | Yes |
متد فوق بوسيله انترنت اكسپلورر پشتيباني نميشود.
متدfindIndex( ) ،انديس اولين عنصريكه با شرط تابع منطبق باشد برگشت ميدهد.
مثال ـ انديس اولين عنصر كه مقدارش بزرگتر از18 باشد، برگشت ميشود.
const numbers = [4, 9, 16, 25, 29]; let first = numbers.findIndex(myFunction); function myFunction(value, index, array) { return value > 18; }
توجه كنيد كه تابع داراي سه آرگومان است:
متدfind( ) از امكاناتES6 در جاوااسكريپت2019 است.
آن بوسيله مرورگرهاي مدرن پشتيباني ميشود.
Yes | Yes | Yes | Yes | Yes |
متد فوق بوسيله انترنت اكسپلورر پشتيباني نميشود.
متدArray.from( ) ازهرشئي با ويژگي length ،يا شئ تكرارپذير يك شئ آرايه برگشت ميدهد.
مثال ـ ايجاد آرايه از رشته
Array.from("ABCDEFG");
from( ) ازامكانات ES6 (JavaScript 2015) است .
متد فوق در مرورگرهاي مدرن پشتيباني مي شود.
Yes | Yes | Yes | Yes | Yes |
متد فوق در انترنت اكسپلورر پشتيباني نمي شود.
متدKeys( ) از كليدهاي آرايه ، يك شئ آرايه ليترالي برگشت ميدهد .
مثال ـ ايجاد شئ آرايه ليترالي از كليدهاي آرايه
const fruits = ["Banana", "Orange", "Apple", "Mango"]; const keys = fruits.keys(); let text = ""; for (let x of keys) { text += x + "<br>"; }
Keys( ) ازامكاناتES6 (JavaScript 2015) است.
متد فوق در مرورگرهاي مدرن پشتيباني مي شود.
Yes | Yes | Yes | Yes | Yes |
متد فوق در انترنت اكسپلورر پشتيباني نمي شود.
مثال ـ ايجاد آرايه ليترالي از آرايه و حلقه براي خروج زوجkey/value
const fruits = ["Banana", "Orange", "Apple", "Mango"]; const f = fruits.entries(); for (let x of f) { document.getElementById("demo").innerHTML += x; }
متدentries( )يك شئ ليترالي با زوج key/value مطابق زير ايجاد ميكند.
[0,"Banana"]
[1,"Orange"]
[2,"Apple"]
[3,"Mango"]
متد فوق آرايه اصلي راتغيير نمي دهد.
Keys( ) ازامكاناتES6 (JavaScript 2015) است.
متد فوق در مرورگرهاي مدرن پشتيباني مي شود.
Yes | Yes | Yes | Yes | Yes |
متد فوق در انترنت اكسپلورر پشتيباني نمي شود.
متدincludes( ) درECMAScript 2016 براي آرايه ايجاد شده است با آن اجازه داده مي شود، كه وجودعنصري را در آرايه كنترل شود .اگر عنصر همNaN يا برخلاف indexOfاست، نشان دهد .
مثال ـ كنترل وجود"Mango"در آرايه
const fruits = ["Banana", "Orange", "Apple", "Mango"]; fruits.includes("Mango"); // is true
نحوي متدincludes( )
متدincludes( ) آرايه كنتر وجود NaN وبرخلاف indexOf( ) را كنترل ميكند.
includes( ) ازامكاناتES6 (JavaScript 2015) است.
متد فوق در مرورگرهاي مدرن پشتيباني مي شود.
Yes | Yes | Yes | Yes | Yes |
عملگر... يك تكرار پذير مثل آرايه را به عناصر بيشتري گسترش ميدهد.
مثال ـ گسترش آرايه
const q1 = ["Jan", "Feb", "Mar"]; const q2 = ["Apr", "May", "Jun"]; const q3 = ["Jul", "Aug", "Sep"]; const q4 = ["Oct", "Nov", "May"]; const year = [...q1, ...q2, ...q3, ...q4];
عملگر... ازامكاناتES6 (JavaScript 2015) است. و در مرورگرهاي مدرن پشتيباني مي شود.
Yes | Yes | Yes | Yes | Yes |
عملگر فوق در انترنت اكسپلورر پشتيباني نمي شود.