В JavaScript, как избежать NaN при добавлении массивов

Я пытаюсь добавить значения двух массивов в JavaScript, например, [1,2,1] + [3,2,3,4]

Ответ должен быть 4,4,4,4, но я или добираюсь 4,4,4 или 4,4,4, NaN, если я изменяю 1-ю длину массива до 4.

Я знаю, что 4-е число должно быть в 1-м массиве, но я не могу выяснить, как сказать JavaScript делать его 0 скорее затем неопределенным, если нет никакого числа.

7
задан Jonas 11 December 2009 в 00:31
поделиться

4 ответа

Используйте isNaN , чтобы гарантировать, что значение не оценивается в NaN в арифметических операциях.

Это безопасно добавит два числа, так что если одно из них не является числом, оно будет заменено на 0.

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

Если вы подозреваете, что либо a, либо b могут быть строкой вместо числа ( «2» вместо 2 ]), вы должны преобразовать его в число перед добавлением. Для этого вы можете использовать Unary + .

var c = (isNaN(a) ? 0 : +a) + (isNaN(b) ? 0 : +b);
9
ответ дан 6 December 2019 в 12:51
поделиться
(array1[3] || 0) + (array2[3] || 0)
6
ответ дан 6 December 2019 в 12:51
поделиться
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) );
}
1
ответ дан 6 December 2019 в 12:51
поделиться
[1,2,3] + [3,2,1]

В приведенном выше примере JavaScript все равно преобразует массивы в строки, поэтому результат будет:

1,2,33,2,1
0
ответ дан 6 December 2019 в 12:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: