JSオブジェクト配列処理メソッドreduceメソッド

 reduce()メソッド

1.このメソッドはアキュムレータとして関数を受け取り、配列内の各値(左から右へ)が縮小され、最終的に値として計算されます。

2.この方法は、関数を構成するための高階関数として使用できます。

注意

このメソッドは、空の配列のコールバック関数を実行しません。

文法

array.reduce(function(total、currentValue、currentIndex、arr)、initialValue)
パラメータ 説明
関数(合計、現在の値、インデックス、arr)

必須、各配列要素の機能を実行するために使用されます

パラメータ 説明
合計 必須。初期値、または計算後の戻り値
現在の価値 必須の現在の要素
currentIndex オプション。現在の要素のインデックス
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'])

初心者、議論を歓迎します。

おすすめ

転載: blog.csdn.net/qq_40010841/article/details/113882693