In Javascript, how to avoid NaN when adding arrays

2019-06-18 12:38发布

问题:

I'm trying to add the values of two arrays in javascript eg. [1,2,1] + [3,2,3,4]

The answer should be 4,4,4,4 but I'm either getting 4,4,4 or 4,4,4,NaN if I change the 1st array length to 4.

I know a 4th number needs to be in the 1st array, but i can't figure out how to tell javascript to make it 0 rather then undefined if there is no number.

回答1:

Use isNaN to ensure the value does not evaluate to NaN in arithmetic operations.

This will safely add two numbers such that if one of them is not a number, it will be substituted with 0.

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

If you suspect that either a or b could be a string instead of number ("2" instead of 2), you have to convert it into number before adding it. You can use a Unary + to do it.

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


回答2:

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


回答3:

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) );
}


回答4:

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

In the above example, JavaScript converts the arrays to strings anyway so the result is:

1,2,33,2,1