Índice 28:

enter image description here

¿Cómo elimino este valor "NaN"? No puedo usar isNaN porque quiero cadenas y números. Pero no NaN

Intentó:

typeof value === 'undefined'
value == null

Sin éxito.

0
Joe 11 may. 2019 a las 01:05

4 respuestas

La mejor respuesta

Puede probar NaN específicamente utilizando Number.isNaN, que es sutilmente diferente del simple isNaN: solo devuelve verdadero si su argumento es un número (cuyo valor es NaN). En otras palabras, no intentará forzar cadenas y otros valores a números.

Demo:

const values = [
  12,
  NaN,
  "hello",
  { foo: "bar" },
  NaN,
  null,
  undefined,
  -3.14,
];

const filtered = values.filter(x => !Number.isNaN(x));

console.log(filtered);

Number.isNaN es nuevo en ECMAScript 6. Es compatible con todos los navegadores, excepto Internet Explorer. En caso de que necesite admitir IE, aquí hay una solución simple:

if (!Number.isNaN) {
    Number.isNaN = function (x) { return x !== x; };
}
3
melpomene 10 may. 2019 a las 22:14

He visto esta verificación de comparación, no estoy seguro de si podría hacer que funcione para usted.

var nanValue = NaN;
if(nanValue !== nanValue) // Returns true!
    alert('nanValue is NaN');
0
JakeofSpades 10 may. 2019 a las 22:16

Debería poder usar Number.isNaN

console.log([1, "foo", NaN, "bar"].filter((x) => !Number.isNaN(x)))
0
Slawomir Chodnicki 10 may. 2019 a las 22:13

Puede usar typeof (para verificar que es un número) en combinación con isNaN

Tenga en cuenta que typeof NaN devuelve "number"

typeof x === "number" && isNaN(x) 

Otra solución es usar Number.isNaN que no intentará convertir el parámetro en un número. Por lo tanto, devolverá true solo cuando el parámetro sea NaN

4
Olivier Boissé 10 may. 2019 a las 22:19