关于javascript: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;
}

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理