给定一个数组 [1, 2, 3, 4]
,我怎样才能找到它的元素之和? (在这种情况下,总和为 10
。)
我认为 $.each
可能有用,但我不确定如何实现它。
原文由 akano1 发布,翻译遵循 CC BY-SA 4.0 许可协议
给定一个数组 [1, 2, 3, 4]
,我怎样才能找到它的元素之和? (在这种情况下,总和为 10
。)
我认为 $.each
可能有用,但我不确定如何实现它。
原文由 akano1 发布,翻译遵循 CC BY-SA 4.0 许可协议
这正是 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
那不是很漂亮吗? :-)
原文由 Florian Margaine 发布,翻译遵循 CC BY-SA 4.0 许可协议
10 回答11.1k 阅读
6 回答3k 阅读
5 回答4.8k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
3 回答2.3k 阅读✓ 已解决
3 回答2.1k 阅读✓ 已解决
推荐(使用默认值减少)
Array.prototype.reduce 可用于遍历数组,将当前元素值与之前元素值的总和相加。
无默认值
你得到一个 TypeError
在 ES6 的箭头函数之前
非数字输入
如果非数字是可能的输入,您可能想要处理它?
不推荐的 危险 评估使用
我们可以使用 eval 来执行 JavaScript 代码的字符串表示。使用 Array.prototype.join 函数将数组转换为字符串,我们将 [1,2,3] 更改为“1+2+3”,计算结果为 6。
当然,显示警报并不是可能发生的最糟糕的事情。我包含此内容的唯一原因是作为 Ortund 问题的答案,因为我认为它没有得到澄清。