lodash中reduce函数的实现

function reduceMe(array, iteratee, accumulator, isFirst) {
  // 设置一个初始的下标,设置为-1
  let index = -1;

  // 设置length,当数组存在时,length为数组的长度,否则为0
  const length = array === null ? 0 : array.length;

  // 当isFirst为true同时length != 0 时,accumulator为数组的第一个元素
  if (isFirst && length) {
    accumulator = array[++index];
  }

  // 遍历数组 index小于length
  while (++index < length) {
    // 调用iteratee函数进行数据处理,
    // iteratee函数参数:accumulator:起始值, array[index]为当前数组值, index为当前数组下标, 完整数组
    // 最后,将iteratee返回的值赋值给accumulator,以提供给下一次iteratee函数使用
    accumulator = iteratee(accumulator, array[index], index, array);
  }

  // 返回最后的结果
  return accumulator;
}

你可能感兴趣的