Удалить значение NaN, JavaScript - PullRequest
0 голосов
/ 11 мая 2019

Индекс 28:

enter image description here

Как мне удалить это значение "NaN". Не могу использовать isNaN, потому что я хочу строки и цифры. Но не NaN

Пробовал:

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

Безуспешно.

Ответы [ 4 ]

4 голосов
/ 11 мая 2019

вы можете использовать typeof (чтобы проверить это число) в сочетании с isNaN

Обратите внимание, что typeof NaN возвращает "number"

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

Другое решение состоит в том, чтобыиспользуйте Number.isNaN , который не будет пытаться преобразовать параметр в число.Таким образом, он вернет true только тогда, когда параметр NaN

3 голосов
/ 11 мая 2019

Вы можете проверить значение 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; };
}
0 голосов
/ 11 мая 2019

Я видел эту проверку сравнения, не уверен, что вы могли бы заставить ее работать на вас.

var nanValue = NaN;
if(nanValue !== nanValue) // Returns true!
    alert('nanValue is NaN');
0 голосов
/ 11 мая 2019

Вы должны быть в состоянии использовать Number.isNaN

console.log([1, "foo", NaN, "bar"].filter((x) => !Number.isNaN(x)))
...