javascript - 与 NaN 的比较没有按我预期的方式工作?

标签 javascript comparison

我正在 Codewars 上做基本的 Javascript Kata 之一,挑战是过滤数组中的所有项目(如果它们不是 Number 基元)。

我写了以下内容:

const list = [ '123', 123, 2, 'aasf', '1', 1 ];

function filter_list(l) {

  const filteredArray = l.filter((item) => {
   if ( Number(item) !== NaN ) return item;
  });

  return filteredArray;

}

console.log(filter_list(list));

我是编程新手,无法理解为什么这不起作用。您的解决方案是什么?

非常感谢

最佳答案

NaN is never equals to anything including NaN itself ! [Ref]

使用isNaN来测试该值。 isNaN 函数确定值是否为 NaN

const list = ['123', 123, 2, 'aasf', '1', 1];

function filter_list(l) {

  const filteredArray = l.filter((item) => {
    return isNaN(item);
  });
  //could be written as l.filter(isNaN);
  return filteredArray;

}

console.log(filter_list(list));

关于javascript - 与 NaN 的比较没有按我预期的方式工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43580225/

相关文章:

javascript - 如何从右到左和从上到下调整div元素的大小

java - SQLite - WHERE 子句中 IS 和 =(等于)的区别。 (使用 JDBC PreparedStatement)

c++ - 整数阈值

javascript - 在 div 容器中时语法荧光笔不起作用

javascript - 使用 jQuery 增加数字

javascript - 在 NodeJs 进程之间使用 npm 缓存

javascript - 根据单击的链接显示不同的选项卡

mysql - PostgreSQL 特定的 SQL 关键字

c++ - 绝对整数值比较和平方值比较。是等价的吗?

java - IntelliJ IDEA Community Edition 12、Ctrl+空格功能