Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

122
Vistas
Reemplace NaN con otro personaje usando JavaScript

¿Puede decirme cómo reemplazar NaN con otro personaje? Hay variables a las que se les asigna algún valor numérico. Más adelante en la función, estas variables obtienen sus valores, que luego muestro en la tabl html e. Pero a veces alguna variable devuelve NaN .

Para solucionar esto, creé por separado una matriz con variables que ya tienen algunos valores. A continuación, comencé el ciclo. Si la condición devuelve NaN , entonces debe reemplazarse con "-" . Pero no funciona.

 var a, b, c, d, x1, x2, x3, x4; var elem = document.getElementById.bind(document); function iFunc() { a = 1; b = 3; c = 2; d = NaN; x1 = elem('a1').innerHTML = a; x2 = elem('b1').innerHTML = b; x3 = elem('c1').innerHTML = c; x4 = elem('d1').innerHTML = d; var arrX = [x1, x2, x3, x4]; for (var x of arrX) { if (x !== x) { x = "-"; // the character that was supposed to replace NaN console.log(x); } } } iFunc();
 <table> <tr> <td><span id="a1"></span></td> <td><span id="b1"></span></td> <td><span id="c1"></span></td> <td><span id="d1"></span></td> </tr> </table>

UPD: con .mapa()

 var a, b, c, d, x1, x2, x3, x4; var elem = document.getElementById.bind(document); function iFunc() { a = 1; b = 3; c = 2; d = NaN; x1 = elem('a1').innerHTML = a; x2 = elem('b1').innerHTML = b; x3 = elem('c1').innerHTML = c; x4 = elem('d1').innerHTML = d; var arrX = [x1, x2, x3, x4].map(n => n != n ? "-" : n); console.log(arrX); } iFunc();
 <table> <tr> <td><span id="a1"></span></td> <td><span id="b1"></span></td> <td><span id="c1"></span></td> <td><span id="d1"></span></td> </tr> </table>

about 4 years ago · Juan Pablo Isaza
3 Respuestas
Responde la pregunta

0

Está cambiando el valor devuelto por elem('d1').innerHTML que no afectará lo que hay en el DOM. Lo que está tratando de hacer de una manera simplificada:

 var a, b, c, d, x1, x2, x3, x4; var elem = document.getElementById.bind(document); function iFunc() { a = 1; b = 3; c = 2; d = NaN; elem("a1").innerHTML = a!=a ? "-" : a; elem("b1").innerHTML = b!=b ? "-" : b; elem("c1").innerHTML = c!=c ? "-" : c; elem("d1").innerHTML = d!=d ? "-" : d; } iFunc();
 <table> <tr> <td><span id="a1"></span></td> <td><span id="b1"></span></td> <td><span id="c1"></span></td> <td><span id="d1"></span></td> </tr> </table>

Para quienes sugieren usar isNaN , no es la mejor manera para todos los casos de uso, según MDN :

Alternativamente, en ausencia de Number.isNaN , la expresión ( x != x ) es una forma más confiable de probar si la variable x es NaN o no, ya que el resultado no está sujeto a los falsos positivos que hacen que isNaN no sea confiable.

about 4 years ago · Juan Pablo Isaza Denunciar

0

Debe reemplazar el valor en la matriz. Actualmente solo está reemplazando el valor en la variable X.

Aquí hay una solución con un bucle for corregido:

 var a, b, c, d, x1, x2, x3, x4; var elem = document.getElementById.bind(document); function iFunc () { a = 1; b = 3; c = 2; d = NaN; var arrX = [x1, x2, x3, x4]; for (var index = 0; index < arrX.length; index++) { var x = arrX[index]; // first we extract the value from the array arrX[index] = isNaN( x ) ? "-" : x;//then we replace the value in the array console.log(arrX[index]) } x1 = elem('a1').innerHTML = a; x2 = elem('b1').innerHTML = b; x3 = elem('c1').innerHTML = c; x4 = elem('d1').innerHTML = d; } iFunc ();
 <table> <tr> <td><span id="a1"></span></td> <td><span id="b1"></span></td> <td><span id="c1"></span></td> <td><span id="d1"></span></td> </tr> </table>

about 4 years ago · Juan Pablo Isaza Denunciar

0

Actualizar

un buen enfoque sería tener todos los valores en una matriz. entonces puede usar un bucle para reemplazar los valores de NaN. Luego, puede manejar la nueva matriz asignada como desee.

 const arr = [1, 3, 2, NaN].map(n => n != n ? "-" : n) console.log(arr)

respuesta anterior Puede verificar con la función isNaN() o n != n y, si es cierto, puede imprimir "-" . En su caso, envolvería este cheque en una función. Como esto:

 function checkNumber(n) { return n != n ? "-" : n; } 

 var a, b, c, d, x1, x2, x3, x4; var elem = document.getElementById.bind(document); function iFunc () { a = 1; b = 3; c = 2; d = NaN; x1 = elem('a1').innerHTML = checkNumber(a); x2 = elem('b1').innerHTML = checkNumber(b); x3 = elem('c1').innerHTML = checkNumber(c); x4 = elem('d1').innerHTML = checkNumber(d); var arrX = [x1, x2, x3, x4]; for (var x of arrX) { x = checkNumber(x); console.log(x); } } iFunc (); function checkNumber(n) { return n != n ? "-" : n; }
 <table> <tr> <td><span id="a1"></span></td> <td><span id="b1"></span></td> <td><span id="c1"></span></td> <td><span id="d1"></span></td> </tr> </table>

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda