reduce()方法接收一個(gè)函數(shù)作為累加器,數(shù)組中的每個(gè)值(從左到右)開始縮減,最終計(jì)算為一個(gè)值。
reduce()方法為每個(gè)數(shù)組索引執(zhí)行一次回調(diào)函數(shù)。
函數(shù)的返回值存儲(chǔ)在累加器(result)中。
array.reduce(callback, initialValue)
var nums = [10, 20, 30, 40, 50]; var sum = nums.reduce(getTotal); function getTotal(x, y) { return (x + y); }測(cè)試看看?/?
表格中的數(shù)字指定了完全支持reduce()方法的第一個(gè)瀏覽器版本:
Method | ![]() | ![]() | ![]() | ![]() | ![]() |
reduce() | 是 | 3 | 10.5 | 4 | 9 |
參數(shù) | 描述 |
---|---|
callback | 為數(shù)組中的每個(gè)元素運(yùn)行的函數(shù)。 函數(shù)參數(shù):
|
initialValue | (可選)用作首次調(diào)用回調(diào)的第一個(gè)參數(shù)的值。 如果未提供初始值,則將使用數(shù)組中的第一個(gè)元素。 |
返回值: | 減少產(chǎn)生的值 |
---|---|
JavaScript版本: | ECMAScript 5 |
本示例刪除數(shù)組中的重復(fù)項(xiàng):
var nums = [10, 20, 10, 20, 13, 5, 4, 5, 13, 4, 4, 4, 4]; let result = nums.sort().reduce((accumulator, current) => { const length = accumulator.length; if (length === 0 || accumulator[length - 1] !== current) { accumulator.push(current); } return accumulator; }, []); function myFunc() { document.getElementById("result").innerHTML = result; }測(cè)試看看?/?
reduce()和reduceRight()之間的區(qū)別:
var arr = ['1', '2', '3', '4', '5']; function funcReduce() { var val = arr.reduce(function(x, y) {return x + y;}); document.getElementById("result").innerHTML = val; } function funcReduceRight() { var val = arr.reduceRight(function(x, y) {return x + y;}); document.getElementById("result").innerHTML = val; }測(cè)試看看?/?