如何查找数字数组的总和
2022-08-29 22:03:39
给定一个数组,我如何找到它的元素之和?(在本例中,总和将为 。)[1, 2, 3, 4]
10
我认为 $.each
可能很有用,但我不确定如何实现它。
给定一个数组,我如何找到它的元素之和?(在本例中,总和将为 。)[1, 2, 3, 4]
10
我认为 $.each
可能很有用,但我不确定如何实现它。
这正是 .reduce
如果您使用的是 ECMAScript 2015(又名 ECMAScript 6):
const sum = [1, 2, 3].reduce((partialSum, a) => partialSum + a, 0);
console.log(sum); // 6
对于较旧的 JS:
const sum = [1, 2, 3].reduce(add, 0); // with initial value to avoid when the array is empty
function add(accumulator, a) {
return accumulator + a;
}
console.log(sum); // 6
是不是很漂亮?:-)
Array.prototype.reduce 可用于循环访问数组,将当前元素值添加到前一个元素值的总和中。
console.log(
[1, 2, 3, 4].reduce((a, b) => a + b, 0)
)
console.log(
[].reduce((a, b) => a + b, 0)
)
你得到一个类型错误
console.log(
[].reduce((a, b) => a + b)
)
console.log(
[1,2,3].reduce(function(acc, val) { return acc + val; }, 0)
)
console.log(
[].reduce(function(acc, val) { return acc + val; }, 0)
)
如果非数字是可能的输入,你可能想要处理它?
console.log(
["hi", 1, 2, "frog"].reduce((a, b) => a + b)
)
let numOr0 = n => isNaN(n) ? 0 : n
console.log(
["hi", 1, 2, "frog"].reduce((a, b) =>
numOr0(a) + numOr0(b))
)
我们可以使用 eval 来执行 JavaScript 代码的字符串表示。使用 Array.prototype.join 函数将数组转换为字符串,我们将 [1,2,3] 更改为 “1+2+3”,其计算结果为 6。
console.log(
eval([1,2,3].join('+'))
)
//This way is dangerous if the array is built
// from user input as it may be exploited eg:
eval([1,"2;alert('Malicious code!')"].join('+'))
当然,显示警报并不是可能发生的最糟糕的事情。我包括这一点的唯一原因是作为Ortund问题的回答,因为我认为它没有得到澄清。