arr.reduce使用和源码实现

1. reduce的使用

在这里插入图片描述
数组方法 reduce 用来迭代一个数组,并且把它累积到一个值中。
使用 reduce 方法来让 array 中的所有值相加。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>reduce的使用</title>
</head>
<body>
 
<script>
var  arr = [1, 2, 3, 4, 5];
sum = arr.reduce(function(prev, cur, index, arr) {
     //输出的是第一项的值或上一次叠加的结果,正在被处理的元素,正在被处理的元素的索引值
     console.log(prev, cur, index);  
     return prev + cur;
})
console.log(arr, sum); //输入数组本身和最后的结果
</script>
</body>
</html>

在这里插入图片描述

2. 手写实现reduce源码

/**
 *
 * @param callback  为传入的回调函数
 * @param prev  为初始值
 */
Array.prototype.myreduce = function (callback, accumulator) {

  let i = 0
  if (!accumulator) {
    i = 1
    accumulator = arr[0]
  }
  for (; i < this.length; i++) {
    accumulator = callback(accumulator, this[i], i, this)
  }
  return accumulator
}


const arr = [1, 2, 3, 4]
let arr1 = arr.myreduce(function (accumulator, currentValue, index, arr) {
  return accumulator + currentValue
}, 22)
console.log(arr1)     // 32
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值