// arr.reduce(function(prev,cur,index,arr){}, init);
// arr 表示原数组;
// prev 表示上一次调用回调时的返回值,或者初始值 init;
// cur 表示当前正在处理的数组元素;
// index 表示当前正在处理的数组元素的索引,若提供 init 值,则索引为0,否则索引为1;
// init 表示初始值。
// reduce(callback,initiaValue)会传入两个变量,回调函数(callback)和初始值(initiaValue)
// 1 数组求和
var num = [];
var res = num.reduce((total,num)=>{
return total+num;
});
console.log(res)// 不加initiaValue初始值的时候 计算会报错
var num = [8,10,100,23,10];
var res = num.reduce((total,num)=>{
return total+num;
},0);
console.log(res)// 151
//兼容性一般加上initialValue
// 合并二维数组 a.concat 连接两个数组 不会更改现有数组,而是返回一个新数组
var doubleArr = [[0, 1], [2, 3], [4, 5]]
let arr = doubleArr.reduce((a, b)=> {
return a.concat(b);
}, []);
console.log(arr)
// console.log [0, 1, 2, 3, 4, 5]
//初始值initialValue []
// 统计一个数组中有多少个重复对象
// 正常
var arr3 = ["name","age","name","age","pear","sex",'账单'];
function getWordCnt(){
var obj = {};
for(var i= 0, l = arr3.length; i< l; i++){
var item = arr3[i];
console.log(obj,obj[item] + 1)
obj[item] = (obj[item] + 1 ) || 1;
}
return obj;
}
console.log(getWordCnt());
// (obj[item] + 1 ) || 1; 初始 (obj[item] + 1 ) = NAN
// {name: 2, age: 2, pear: 1, sex: 1}
// 用reduce时:
var arr4 = ["name","age","name","age","pear","sex"];
function getWordCnt1(){
return arr4.reduce((prev,next)=>{
prev[next] = (prev[next] + 1) || 1;
return prev;
},{});
}
console.log(getWordCnt1());
// {name: 2, age: 2, pear: 1, sex: 1}
reduce 函数使用笔记
最新推荐文章于 2023-08-15 23:46:40 发布