JS对象——数组处理方法reduce方法

 reduce()方法

1、该方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值;

2、该方法可以作为一个高阶函数,用于函数的compose

注意

该方法对于空数组是不会执行回调函数的。

语法

array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
参数 描述
function(total,currentValue,index,arr)

必传,用于执行每个数组元素的函数

参数 描述
total 必需。初始值,或者计算结束后的返回值
currentValue 必需,当前元素
currentIndex 可选。当前元素的索引
arr 可选。当前元素所属的数组对象
initialValue 可选,传递给函数的初始值

如果没有设置初始值,循环会从索引为零开始。

实际应用(一)

官方案例-累加计算

function getSum(total, num) {
  
    
     return total + num;

}
[65, 44, 12, 4].reduce(getSum)

//没有设置初始值,循环从数组索引为零开始执行。

实际应用(二)

 //判断数组是否连续
  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)

实际运用(三)

//每个值出现次数都为一。如果是返回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