关于数组的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]
posted @ 2020-03-19 16:08  Moliy-Moliy  阅读(381)  评论(0编辑  收藏  举报