如何将循环重写为匿名函数?

问题描述

这种类型的循环如何被覆盖

let num - fieldOffset[0];
for (let i = 1; i < fieldOffset.length; i++) {
          if (fieldOffset[i] < fieldOffset[i - 1]) {
            num += fieldOffset[i];
          }
        }

作为以下类型的匿名函数

const reducer = (accumulator,currentValue) => accumulator + currentValue;
array1.reduce(reducer)

解决方法

使用Array.prototype.reduce的第三个(可选)参数可以解决问题:

num = fieldOffset.reduce((acc,value,index) => acc += (index && (value > fieldOffset[index - 1])) ? value : 0,0);