【循环系列】reduce循环

829 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

前言

发现JS中的循环有好多,如果让一下说出来,感觉有些会想不起来,本次花时间来梳理一下JS中循环语句。

本系列相关文章:

  1. 【循环系列】for循环和while循环
  2. 【循环系列】for in和forEach循环
  3. 【循环系列】之map循环
  4. 【循环系列】filter和some循环
  5. 【循环系列】every循环 本文是本系列第6篇,关于reduce循环

reduce

reduce回调函数中接受四个参数:

第一个参数:total表示初始值, 或者上次累积计算结束后的返回值

第二个参数:当前值value

第三个参数:下标index

第四个参数:原数组

我们可以使用reduce计算数组的和或者阶层,如

let arr = [1,2,3,4,5,6,7,8,9,10];
let res = arr.reduce((total, cur, index, arr) =>{
  return total+cur;
});
 console.log(res);//55

为了看清楚,我们干脆直接打印出来四个参数来看看

let arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
arr.reduce((total, cur, index, arr) => {
	console.log(total, cur, index, arr);
	return total + cur;
});

结果

可以看出来,每一次的tatal其实就是上一次的循环执行的返回结果

下面来模拟实现_reduce

Array.prototype._reduce = function (fn, thisTo) {
  let total = this[0];
  for (let i = 1; i < this.length; i++) {
    total = fn.call(thisTo, total, this[i], i, this)
  }
  return total;
}
let arr = [1, 2, 3, 4, 5];
let res = arr._reduce((total, cur, index, arr) => {
  console.log(total, cur, index, arr); //每一次的tatal就是上一次的循环执行的返回结果
  return total + cur;
});
console.log(res)

成功实现

结束

以上就是reduce循环的相关内容