// Quiero agregar una matriz de elementos numéricos pero el resultado muestra a Nan por qué
let numarr = [5598, 4589 ,25465164] let len = numarr.length; let i, numval = 0; for(i=0; i <= len; i++) { numval += numarr[i]; } document.getElementById("demo").innerHTML = numval;Es por el <= in for-loop . Si usa <= , entonces el bucle se ejecutará más allá de la longitud de la matriz e intentará acceder al elemento que no está presente.
Si está intentando acceder al elemento que no está presente, devolverá undefined . La adición de un número undefined le dará NaN
Utilice numarr.length - 1 o i < len
let numarr = [5598, 4589, 25465164] let len = numarr.length; let i, numval = 0; for (i = 0; i < len; i++) { numval += numarr[i]; } document.getElementById("demo").innerHTML = numval; <h1 id="demo"></h1>Solución alternativa: también puede usar reducir aquí para lograr el mismo resultado
let numarr = [5598, 4589, 25465164] const numval = numarr.reduce((a, c) => a + c); document.getElementById("demo").innerHTML = numval; <h1 id="demo"></h1>Su matriz tiene 3 elementos en los índices 0, 1 y 2. Por lo tanto, sus matrices deben ejecutarse desde 0 hasta array.length - 1 . Si intenta acceder a numarr[3] el valor será undefined . Agregar undefined a un número es NaN , eso significa que no es un número
Debería ser i < len
let numarr = [5598, 4589, 25465164]; let len = numarr.length; let i, numval = 0; for (i = 0; i < len; i++) { numval += numarr[i]; } document.getElementById("demo").innerHTML = numval; <div id="demo"></div>El error que cometió ya se ha señalado en muchas otras respuestas, me gustaría mostrarle una alternativa en JS moderno.
En lugar de usar un bucle for basado en índice, Javascript tiene una función especializada para lo que desea hacer, que se llama Array.prototype.reduce . Se llama una vez para cada elemento de la matriz, agrega su value al accumulator y devuelve el acumulador después de la última iteración. El valor inicial 0 para el acumulador es el segundo parámetro.
const numarr = [5598, 4589 ,25465164] const sum = numarr.reduce((accumulator, value) => accumulator+value, 0); document.getElementById("demo").innerHTML = sum; <div id="demo"></div>