我正在执行CODEWARS上的基本JavaScript Kata之一,而挑战是如果它们不是Number
primitives,则在数组中过滤所有项目。
我写了以下内容:
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
永远不等于包括NaN
本身![ 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));
您可以使用isNaN
const list = [ '123', 123, 2, 'aasf', '1', 1 ];
function filter_list(l) {
const filteredArray = l.filter((item) => {
if ( isNaN(Number(item)) ) return item;
});
return filteredArray;
}
console.log(filter_list(list));
isNaN
功能的必要性
与JavaScript中所有其他可能的值不同,不可能依靠等位运算符(==和===(来确定值是否为 NaN
,因为NaN == NaN
和NaN === NaN
都评估为false。因此,isNaN
功能的必要性。
来源:isNaN