1. 程式人生 > 其它 >JS中常見的高階函式

JS中常見的高階函式

技術標籤:javascript

高階函式:英文叫Higher-order function。JavaScript的函式其實都指向某個變數。既然變數可以指向函式,函式的引數能接收變數,那麼一個函式就可以接收另一個函式作為引數,這種函式就稱之為高階函式。

一、filter

其中該函式的引數是一個函式,filter函式的返回值是一個數組。

filter中的回撥函式有一個要求,必須返回一個boolean
true:當返回true時,函式內部會自動將這次回撥的n加入到新的陣列中
false:當返回false時,函式內部會過濾掉這次的n

const nums = [10, 20, 30, 40, 50,
100, 200, 300]; let newnums = nums.filter(function (n) { return n >= 100; }); console.log(newnums); //[ 100, 200, 300 ]

二、.map

其中該函式的引數是一個函式,返回值是一個數組。

map方法是對陣列中每個元素進行相同的操作

let newnums = [ 100, 200, 300 ];
let new2num = newnums.map(function (n) {
   return n * 2;
});
console.log(new2num); //[ 200, 400, 600 ]

三、reduce

其中該函式有兩個引數,第一個引數是一個函式;第二個引數可選,為傳遞給函式的初始值。返回值是計算結果。

reduce作用對陣列中所有的值進行彙總

let newnums = [ 200, 400, 600 ];
let total = new2num.reduce(function (preValue, n) {
   return preValue + n;
}, 0);
console.log(total); //1200

// 第一次:preValue 0 n 200
// 第二次:preValue 200 n 400
// 第三次:preValue 600 n 600
// 1200

對上面三種方法,用鏈式和箭頭

total = nums.filter(n => n >= 100).map(n => n * 2).reduce(
(pre,n) => pre + n);