计算给定数组 arr 中所有元素的总和的几种方法
1.forEach遍历:
function sum(arr) { var result = 0; arr.forEach(function(item,index) { result += item; }); return result; };
2.reduce
function sum(arr) { return arr.reduce(function(pre,cur){ return pre+cur; }) }
var sum=[2,4,1]; let nums=sum.reduce(function(pre,cur){ return pre+cur; }) nums //7
var books=[{ name:'语文', price:20 }, { name:'数学', price:21 }, ] let prices=books.reduce(function(pre,item){ return pre+item.price*2; },0) prices 82
3. eval
function sum(arr) { return eval(arr.join("+")); }
[1,2,3,4].join('+') //"1+2+3+4" eval("1+2+3+4"); //10
4.filter
var sum=[2,4,1,3,7,5,6,9]; let nums=sum.filter(function(item){ return item<5; }) nums // [2, 4, 1, 3]
5.map
var sum=[2,4,1,3,7,5,6,9]; let nums=sum.map(function(item){ return item*2; }) nums // [4, 8, 2, 6, 14, 10, 12, 18]
6.常规循环
function sum(arr) { var result= 0; var len=arr.length; for (var i=0;i<len;i++) { result += arr[i]; } return result; }
var sum=[2,4,1,3,7,5,6,9]; let nums=sum.filter(n=>n<=3).map(n=>n*2).reduce((pre,cur)=>pre+cur); nums //12