1. 程式人生 > 其它 >JavaScript 迭代器函(every,some,forEach,map,filter,reduce)

JavaScript 迭代器函(every,some,forEach,map,filter,reduce)

技術標籤:前端jsjavascript

JavaScript 迭代器函式


1、Every 與 Some 方法


Every 方法會迭代陣列中的每個元素,直到返回false。如:

let arr1 = [1,2,3,4,5,6,7,8,9,10,11];

const fn = x => x => x % 2 === 0;

arr1.every(fn);

在這個例子裡,arr1的第一個元素是1,它無法餘2為0的(因為1是奇數),因此 fn 函式返回 false 後,every 執行結束。


同樣的,我們用上個例子的陣列使用Some 方法。

Some 方法與 Every 方法的效果相反,它會迭代陣列的每個元素,直到函式返回true。如:

arr1.some(fn)

在這個例子裡,arr1 第一個元素是1,fn函式返回false ,所以它就迭代到了第二個元素2。

又因為2能夠餘2為0,所以 fn函式返回 true,至此 some 方法執行完畢。

2、ForEach 方法


ForEach 方法會迭代陣列中的每個元素,它與 for 迴圈的結果相同。

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

arr.forEach(item => console.log(item)
);

3、Map 與 Filter 方法

Map 方法會儲存傳入的函式的返回值(執行結果)。如:

const fn = x => x % 2 === 0;

let arr = [1,2,3,4,5,6];

const arr2 = arr.map(fn);

在這個例子裡,fn 函式會根據你傳入的值是否為 偶數來判定返回 true 或false。


又因 arr 第一個元素為奇數,fn 函式返回 false; 第二個元素為偶數,fn 函式返回 true; 第三個元素為…


所以最終 arr2的值為: [ false ,true ,false ,true ,false ,true ];


同樣的,我們採用上個例子的函式與陣列來使用 Filter 方法。


Filter 方法 返回的新陣列由使用的函式返回 true 的元素組成。如:

const arr3 = arr.filter(fn);

所以arr3的結果為 : [2,4,6];

4、Reduce 方法


Reduce 方法會返回陣列所有元素的和。


該方法可以接收四個引數,total,currentValue,currentIndex,arr。

在這裡插入圖片描述

let arr = [1,2,3,4,5,6];

arr.reduce((total,currentValue) => total + currentValue);

將輸出 21。