2009-12-11 21 views
7

Estoy tratando de agregar los valores de dos matrices en javascript, por ejemplo. [1,2,1] + [3,2,3,4]En Javascript, cómo evitar NaN al agregar matrices

La respuesta debería ser 4,4,4,4 pero obtendré 4,4,4 o 4,4,4, NaN si cambio la longitud de la 1ra matriz a 4.

Sé que un cuarto número debe estar en la 1ra matriz, pero no puedo descifrar cómo decir a Javascript para que sea 0 en lugar de indefinido si no hay número.

Respuesta

9

Uso isNaN para asegurar el valor no se evalúa como NaN en las operaciones aritméticas.

Esto añadirá de forma segura dos números tales que si uno de ellos no es un número, que será sustituido por 0.

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

Si sospecha que A o B podría ser una cadena en lugar de número ("2" en lugar de 2), debe convertirlo en número antes de agregarlo. Puede usar unario + para hacerlo.

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

Woot, más unario se convierte en número, impresionante! – 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] 

En el ejemplo anterior, JavaScript convierte los arrays de cadenas de todos modos por lo que el resultado es:

1,2,33,2,1 
Cuestiones relacionadas