reduce方法接受两个参数,(1函数.2初始值),函数有四个参数(初始值,当前值,当前索引,当前元素所属的数组)
1.reduce方法JSON数组去重
let person = [
{id: 0, name: "小明"},
{id: 1, name: "小张"},
{id: 3, name: "小孙"},
{id: 2, name: "小李"},
{id: 1, name: "小周"},
{id: 2, name: "小陈"},
];
let obj = {};
person = person.reduce((cur,next) => {
obj[next.id] ? "" : obj[next.id] = true && cur.push(next);
return cur;
},[]) //设置cur默认类型为数组,并且初始值为空的数组
console.log(person, 'person');
2.无初始值时
[0,1,2,3,4].reduce(function(previousValue, currentValue, index, array){
return previousValue + currentValue;
});
previousValue currentValue index array return value
first 0 1 1 [0,1,2,3,4] 1
second 1 2 2 [0,1,2,3,4] 3
third 3 3 3 [0,1,2,3,4] 6
fourth 6 4 4 [0,1,2,3,4] 10
3。有初始值时
[0,1,2,3,4].reduce(function(previousValue, currentValue, index, array){
return previousValue + currentValue;
}, 10);
previousValue currentValue index array return value
第一次调用 10 0 0 [0,1,2,3,4] 10
第二次调用 10 1 1 [0,1,2,3,4] 11
第三次调用 11 2 2 [0,1,2,3,4] 13
第四次调用 13 3 3 [0,1,2,3,4] 16
第五次调用 16 4 4 [0,1,2,3,4] 20
4,数组内的数相加
var total = [0, 1, 2, 3].reduce(function(a, b) {
return a + b;
});
// total == 6