Вы можете проверить значение NaN
, в частности, используя Number.isNaN
, что несколько отличается от обычного isNaN
: он возвращает значение true, только если его аргумент является числом (значение которого равно NaN). Другими словами, он не будет пытаться привести строки и другие значения к числам.
Демо-версия:
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
является новым в ECMAScript 6. Он поддерживается всеми браузерами, кроме Internet Explorer. Если вам нужна поддержка IE, вот простой обходной путь:
if (!Number.isNaN) {
Number.isNaN = function (x) { return x !== x; };
}