2009-12-11 10 views
7

J'essaie d'ajouter les valeurs de deux tableaux dans javascript par exemple. [1,2,1] + [3,2,3,4]En Javascript, comment éviter NaN lors de l'ajout de tableaux

La réponse devrait être 4,4,4,4 mais je suis soit obtenir 4,4,4 ou 4,4,4, NaN si je change la longueur du 1er tableau à 4.

Je sais qu'un 4ème nombre doit être dans le 1er tableau, mais je ne peux pas comprendre comment dire javascript pour le rendre 0 plutôt que non défini s'il n'y a pas nombre.

Répondre

9

Utilisez isNaN pour assurer la valeur n'évalue pas NaN dans les opérations arithmétiques.

Cela en toute sécurité ajouter deux nombres tels que si l'un d'entre eux est pas un nombre, il sera remplacé par 0.

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

Si vous pensez que a ou b pourrait être une chaîne au lieu du numéro ("2" au lieu de 2), vous devez le convertir en nombre avant de l'ajouter. Vous pouvez utiliser un Unaire + pour le faire.

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

Woot, plus unaire convertit en nombre, impressionnant! – 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] 

Dans l'exemple ci-dessus, JavaScript convertit les tableaux de chaînes de toute façon si le résultat est:

1,2,33,2,1 
Questions connexes