【发布时间】:2014-07-11 19:01:48
【问题描述】:
所以我正在尝试编写一个函数来评估一个数组,并且只输出数组中所有数字变量的总和。例如,如果我输入数组 [1,2,3,"chunky bacon", 5, false],它只会将 1,2,3,和 5 相加,因此返回 11。 这是我写的:
var sum = function(num) {
var total = 0;
for (var i = 0; i < num.length; i++) {
if (typeof i == "number") {
total += num[i];
};
};
console.log(total);
}
但是,当我在控制台中使用 [1,2,3,"chunky bacon", 5, false] 对其进行测试时,它会返回
6chunky bacon5false
所以我的问题是 1)如何让循环在遇到无数字元素时不停止,所以在上面的示例中它将继续将 6 与 5 相加? 2)如何让它停止打印无数字元素?我不知道为什么它会打印出来,因为我只说 console.log(total)。
感谢您的帮助!
【问题讨论】:
-
myArray.filter(Number).reduce(sum)
-
@dandavis:要是 JavaScript 有一个
sum全局就好了。我猜.reduce(function(a, b) { return a + b }, 0)也可以。 -
我想你的意思是
if (typeof num[i] == "number") {。在循环中,i(递增的索引)将始终是一个数字。您似乎想检查数组中的值,即num[i] -
是的,我每晚都为 Math.sum 和 Math.diff 祈祷,这样我们就可以对数组进行快速的原生数学运算。
标签: javascript arrays sum typeof