在Javascript中,如何在添加数组时避免使用NaN

时间:2009-12-11 00:31:06

标签: javascript arrays nan

我正在尝试在javascript中添加两个数组的值,例如。 [1,2,1] + [3,2,3,4]

答案应该是4,4,4,4,但如果我将第一个数组长度改为4,我要么得到4,4,4或4,4,4,NaN。

我知道第四个数字需要在第一个数组中,但我无法弄清楚如何告诉javascript使它为0而不是未定义如果没有数字。

4 个答案:

答案 0 :(得分:9)

使用isNaN确保在算术运算中值不会计算为NaN

这将安全地添加两个数字,如果其中一个不是数字,它将被替换为0。

var c = (isNaN(a) ? 0 : a) + (isNaN(b) ? 0 : b);

如果您怀疑a或b可能是字符串而不是数字("2"而不是2),则必须在添加之前将其转换为数字。您可以使用一元+来执行此操作。

var c = (isNaN(a) ? 0 : +a) + (isNaN(b) ? 0 : +b);

答案 1 :(得分:6)

(array1[3] || 0) + (array2[3] || 0)

答案 2 :(得分:1)

var a = [ 1, 2, 3, 4, 5 ];
var b = [ 2 , 3];
var c = [];
var maxi = Math.max(a.length, b.length);
for (var i = 0; i < maxi; i++) {
   c.push( (a[i] || 0) + (b[i] || 0) );
}

答案 3 :(得分:0)

[1,2,3] + [3,2,1]

在上面的示例中,JavaScript无论如何都将数组转换为字符串,结果是:

1,2,33,2,1