主要讲解 ES6 新添加的数组方法:reduce 的使用介绍,然后说说自己使用时候的心得。
一、reduce 介绍以及参数
该数组方法主要是对数组里面的每一项元素执行回调方法,然后返回计算之后的结果。
具体参数:
array.reduce(function(prev, current, currentIndex, arr), initialValue)
- prev 必选,表示前一次计算的结果;
- current 可选,当前项;
- currentIndex 可选,当前项的索引;
- arr 可选,数组;
- initialValue 可选,在一次执行数组的回调函数是,传给函数的初始值。
二、使用心得
关于这点感觉才是这篇文章的重点。数组的循环方法有很多:for, map, forEach, ...
但是为什么还要选择 reduce 方法呢?
看看这这篇文章,人家写的很好,我也是从中收到启发:https://www.jianshu.com/p/e375ba1cfc47
然后,自己要补充的一个场景就是:给对象的每一个属性(属性的值还是一个对象)添加一个属性
const obj = {
a: {
aa: 1
},
b: {
bb: 2
},
c: {
cc: 3
}
}
const res = Object.keys(obj).reduce(function(prev, current) {
return Object.assign(prev, {
[current]: {
...obj[current],
add: 'add property',
}
})
}, {})
console.log(res)
// {
// a: { aa: 1, add: 'add property' },
// b: { bb: 2, add: 'add property' },
// c: { cc: 3, add: 'add property' }
// }