Я пытаюсь добавить значения двух массивов в 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 скорее затем неопределенным, если нет никакого числа.
Используйте 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);
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,2,3] + [3,2,1]
В приведенном выше примере JavaScript все равно преобразует массивы в строки, поэтому результат будет:
1,2,33,2,1