Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

115
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!