关于数组的reduce方法:

关于数组的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]

猜你喜欢

转载自www.cnblogs.com/hou-yuan-zhen/p/12524956.html
今日推荐