关于数组的reduce方法:
定义:arr.reduce(function(pre,cur,index,arr){
},init)
其中:arr,表示原数组,pre表示上次回调时的返回值,或者初始值init,
cur 表示当前正在处理的数组元素,
index 表示当前正在处理的数组元素的索引,若提供init值,索引为0,不提供,索引值为1
init 表示初始值
1.使用reduce方法,数组去重
let arr = [1,2,3,4,4,1]
let newArr = arr.reduce((pre,cur) => {
if(!pre.includes(cur)){
return pre.concat(cur)
}else{
return pre
}
},[])
console.log(newArr) // [1,2,3,4]
2.使用reduce方法,将多维数组转化为一维数组
let arr = [[0,1],[2,3],[4,[5,6]]]
const newArr = function(arr) {
return arr.reduce((pre,cur) => {
pre.concat(Array.isArray(cur) ? newArr(cur) :cur)
},[])
//检测当前的元素是不是数组,如果是数组就再次调用newArr()函数,不是就直接拼接。[]表示返回 //的是一个数组类型,初始值是一个空数组
}
console.log(newArr())//[0,1,2,3,4,5,6]
3.使用reduce方法,将对象数组求和
let result = [
{
subject: 'math',
score: 10
},
{
subject: 'chinese',
score: 20
},
{
subject: 'english',
score: 30
}
];
let score = result.reduce((pre,cur)=>{
return pre + cur.score
},0)//为0表示返回的数字,初始值是0
cosole.log(score)//60
4.使用reduce方法,将二维数组,变成一维数组
let arr = [[2,3],[4,5],[6,7]]
let newArr = arr.reduce((pre,cur) => {
return pre.concat(cur)
},[])
console.log(newArr)//[2,3,4,5,6,7]