Índice 28:
¿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.
4 respuestas
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; };
}
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');
Debería poder usar Number.isNaN
console.log([1, "foo", NaN, "bar"].filter((x) => !Number.isNaN(x)))
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
Preguntas relacionadas
Nuevas preguntas
javascript
Para preguntas sobre la programación en ECMAScript (JavaScript / JS) y sus diversos dialectos / implementaciones (excepto ActionScript). Incluya todas las etiquetas relevantes en su pregunta; por ejemplo, [node.js], [jquery], [json], etc.