2009-12-11 17 views
7

Próbuję dodać wartości dwóch tablic w javascript np. [1,2,1] + [3,2,3,4]W JavaScript, jak uniknąć NaN przy dodawaniu tablic

Odpowiedź powinna wynosić 4,4,4,4, ale otrzymuję 4,4,4 lub 4,4,4, NaN, jeśli zmienię 1. długość tablicy na 4.

Wiem, że czwarta liczba musi znajdować się w pierwszej tablicy, ale nie mogę wymyślić, jak powiedzieć javascript, aby był 0, a następnie nie został zdefiniowany, jeśli nie ma numer.

Odpowiedz

9

Zastosowanie isNaN celu zapewnienia wartość nie ocenia się NaN w operacji arytmetycznych.

Będzie bezpiecznie dodać dwie liczby takie, że jeśli jeden z nich nie jest liczbą, zostanie podstawiony 0.

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

Jeśli podejrzewasz, że A lub B może być ciągiem zamiast numeru ("2" zamiast 2), musisz go przekonwertować na numer przed dodaniem. Możesz użyć Unary +, aby to zrobić.

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

WOOT, jednoskładnikowa Plus konwertuje do numeru, niesamowite! – akuhn

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)); 
} 
0
[1,2,3] + [3,2,1] 

W powyższym przykładzie, JavaScript konwertuje tablic do strun tak więc wynik jest:

1,2,33,2,1 
Powiązane problemy