js数组求和方法
2019-08-25 本文已影响0人
Aniugel
一、for for in for of forEach map
var arr = [7, 2, 29, 4];
// for方法
var sum = 0;
for (var i = 0, len = arr.length; i < len; i++) {
sum += arr[i]
}
console.log('for', sum)
var arr = [7, 2, 29, 4];
// for in
var sum = 0;
for (var i in arr) {
sum += arr[i]
}
console.log('for in', sum)
var arr = [7, 2, 29, 4];
// for of
var sum = 0;
for (var i of arr) {
sum += i
}
console.log('for of', sum)
var arr = [7, 2, 29, 4];
// forEach
var sum = 0;
arr.forEach((val, index, arr) => {
sum += val
})
console.log('forEach', sum)
var arr = [7, 2, 29, 4];
// map
var sum = 0;
arr.map((val, index, arr) => {
sum += val
})
console.log('map', sum)
二、eval方法(不推荐,耗性能,最慢)
var arr = [7, 2, 29, 4];
// eval方法
console.log('eval', eval(arr.join('+')))
三、reduce归并方法
这两个方法都会迭代数组的所有项,然后构建一个最终返回的值。其中, reduce()方法从数组的第一项开始,逐个遍历到最后。而 reduceRight()则从数组的最后一项开始,向前遍历到第一项
var arr = [7, 2, 29, 4];
var sum = arr.reduce((prev, next, index, array) => prev + next)
console.log('reduce', sum)
var arr = [7, 2, 29, 4];
var sum = arr.reduceRight((last, before, index, array) => last + before)
console.log('reduceRight', sum)
四、递归方法
function sum(arr) {
var len = arr.length;
if (len == 0) {
return 0
} else if (len == 1) {
return arr[0]
} else {
return arr[0] + sum(arr.slice(1))
}
}
console.log(sum([1, 2, 3, 4]))