reduce()メソッド
1.このメソッドはアキュムレータとして関数を受け取り、配列内の各値(左から右へ)が縮小され、最終的に値として計算されます。
2.この方法は、関数を構成するための高階関数として使用できます。
注意
このメソッドは、空の配列のコールバック関数を実行しません。
文法
array.reduce(function(total、currentValue、currentIndex、arr)、initialValue)
パラメータ | 説明 | ||||||||||
関数(合計、現在の値、インデックス、arr) | 必須、各配列要素の機能を実行するために使用されます
|
||||||||||
初期値 | オプションで、関数に渡される初期値 |
初期値が設定されていない場合、ループはインデックス0から始まります。
実用化(1)
官方案例-累加计算
function getSum(total, num) {
return total + num;
}
[65, 44, 12, 4].reduce(getSum)
//没有设置初始值,循环从数组索引为零开始执行。
実用化(2)
//判断数组是否连续
let a1rr = [3, 4, 4, 6, 7, 8, 9, 10, 11];
function getContinueFun2(arr) {
let ress = arr.reduce((flag, cur, ind, arr) => {
arr[ind + 1] - cur == 1 ? flag++ : ''
return flag;
}, 0);
return ress == arr.length - 1
}
getContinueFun2(a1rr)
実用化(3)
//每个值出现次数都为一。如果是返回true,否则返回false。
function getUniNum(arr) {
let obj = arr.reduce((obj, curr, i, arr) => {
obj[curr] ? obj[curr]++ : obj[curr] = 1;
return obj
}, {});
return Object.values(obj).length === arr.length
}
getUniNum([1,'name',2,4,3,'name'])
初心者、議論を歓迎します。