Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript如何计算变量类型和数组的返回和_Javascript_Arrays_Sum_Typeof - Fatal编程技术网

JavaScript如何计算变量类型和数组的返回和

JavaScript如何计算变量类型和数组的返回和,javascript,arrays,sum,typeof,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 +=

因此,我试图编写一个函数来计算数组,只输出数组中所有数字变量的和。例如,如果我输入数组[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);
}
var sum=函数(num){
var合计=0;
对于(变量i=0;i
然而,当我在控制台中用[1,2,3,“chunky bacon”,5,false]测试它时,它会返回

6粗巴康5假

所以我的问题是 1) 当循环运行到一个无编号的元素时,如何使循环不停止,因此在上面的示例中,它将继续添加6和5? 2) 我如何让它停止打印无编号元素?我不知道为什么它会打印出来,因为我只说了console.log(总计)

谢谢你的帮助

(typeof i==“number”)始终是一个数字,因为“i”是循环计数器。你应该使用

if (typeof num[i] == "number")

(代码段未测试)

您可以通过对照数组值检查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));
vararray=[1,2,3,“chunky bacon”,5,false];
var总和=函数(arr){
var a=0;
var b=阵列长度;
对于(C=0;C< b;C++){
如果(!isNaN(arr[c])){
a+=arr[c];
}
}    
返回a;
}
log(总和(数组));

这里有一个工作示例:

myArray.filter(Number).reduce(sum)@dandavis:如果JavaScript有一个
sum
global。我猜
.reduce(函数(a,b){returna+b},0)
也能工作。我想你的意思是
如果(typeof num[I]=“number”){
。在循环中,
I
(递增的索引)将始终是一个数字。你似乎想检查数组中的值,即
num[I]
是的,我每天晚上都为Math.sum和Math.diff祈祷,这样我们就可以在数组上快速进行本机数学运算。