JavaScript如何评估变量的类型和返回数组的总和

时间:2014-07-11 19:01:49

标签: javascript arrays sum typeof

所以我试着编写一个计算数组的函数,只输出数组中所有数字变量的总和。例如,如果我输入数组[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(总计)。

感谢您的帮助!

2 个答案:

答案 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/