一、语法:
Array.reduce(function(prev,cur,index,arr){
//some code
},init)
参数说明:
-- prev 必需。首次执行时:如果有init,则首次返回init,如果没有init,则首次返回arr的第一项,后续返回上一次调用回调时返回值;
-- cur 必需。当前正在处理的数组元素;
-- index 可选。当前正在处理的数组元素索引,若提供init值,则索引为0,否则索引为1;
-- init 可选。表示初始值(可省略)
-- arr 可选。 原数组
二、下面是一些例子:
var arr = [11, 22, 33, 44, 22];
// 1.求和
var sum = arr.reduce((prev, cur, index) => {
return prev + cur
});
console.log(sum);
// 2.计算数组中每个元素出现的次数
var obj = arr.reduce((prev, cur) => {
if (cur in prev) {
prev[cur]++
} else {
prev[cur] = 1
}
return prev
}, {})
console.log(obj)
// 3.数组偏平化
const newArr = (arr) => {
return arr.reduce((prev, cur) => {
return prev.concat(Array.isArray(cur) ? newArr(cur) : cur)
}, [])
}
console.log(newArr(arr))
//4.数组去重
var resArr = arr.reduce((prev, cur) => {
if (!prev.includes(cur)) {
return prev.concat(cur)
} else {
return prev
}
}, [])
console.log("数组去重:", resArr)
网友评论