所以我试着编写一个计算数组的函数,只输出数组中所有数字变量的总和。例如,如果我输入数组[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,&#34; chunky bacon&#34;,5,false]进行测试时,它将返回
6chunky bacon5false
所以我的问题是 1)如果循环运行到无数字元素,我怎么能不停止循环,所以在上面的例子中它将继续添加6和5? 2)如何让它停止打印无数字元素?我不知道它打印出来的原因,因为我只说了console.log(总计)。
感谢您的帮助!
答案 0 :(得分:2)
(typeof i ==&#34; number&#34;)总是一个数字因为&#34; i&#34;是你的循环计数器。你应该使用
if (typeof num[i] == "number")
(片段未经测试)
答案 1 :(得分:0)
您可以通过针对数组值检查isNaN来解决此问题。
var array = [1, 2, 3, "chunky bacon", 5, false];
var sum = function(arr) {
var a = 0;
var b = arr.length;
for ( c = 0; c < b; c++ ) {
if ( !isNaN(arr[c]) ) {
a += arr[c];
}
}
return a;
}
console.log(sum(array));
以下是一个工作示例:http://jsfiddle.net/KA827/1/