大家好,又见面了,我是你们的朋友全栈君。
- reduce
reduce 收敛 4个参数,返回的是叠加后的结果, 原数组不发生变化,回调函数返回的结果 //从左向右 //prev 代表前一项,cur 代表当前项
【求和】
代码语言:javascript复制 let arr =[1,3,5,8,9,7];
let sum = arr.reduce(function(prev,cur,index,arr){
//return 100;//本次的返回值 会作为下一次的prev
return prev cur;//本次的返回值 会作为下一次的prev
});
console.log(sum);
还可以这样
代码语言:javascript复制var arr1 = [{price:50,count:8},{price:50,count:6},{price:45,count:9}];
let totalSum = arr1.reduce(function(prev,cur,index,arr){
return prev.price*prev.count cur.price*cur.count;
})
console.log("总价格是:",totalSum);//会返回NAN
因为第一次会返回一个数,将作为下一次的prev,就没有price 和 count属性了 解决办法
代码语言:javascript复制let totalSum1 = arr1.reduce(function(prev,cur,index,arr){
return prev cur.count*cur.price;
},0);//默认指定第一次的prev
console.log("总价格是:",totalSum1);
【求和乘】
代码语言:javascript复制let arr2 = [1,2,3];
let res = arr2.reduce(function(prev,cur,index,arr){
//return Math.pow(prev,cur);//幂运算
return prev**cur;//也可以写成这样
})
console.log(res);
幂运算
代码语言:javascript复制Math.pow 等价于 **
【将一个二维数组变为一维数组】
代码语言:javascript复制let arr3 = [[1,2,3],[4,5,6],[7,8,9]];
let newArr = arr3.reduce(function(prev,cur){
return prev.concat(cur);
})
console.log("一维数组为:",newArr);
- reduceRight()//从右向左
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。