我在代码战中遇到了这个挑战,我必须将数组中的数字作为新数组返回并忽略所有非数字。
我收到了类似的内容[' 1',' 2',\' a \',\' b \&# 39]。 这意味着它只返回[1,2]
我试过这个。
function filter_list(l) {
return l.filter(c => c>=0 && c <= 999)
}
我在[1, 2]
的情况下获得了['1', '2', \'a\', \'b\']
,但在[\'1\']
而不是[\'1\']
[]
我该怎么办?
答案 0 :(得分:2)
您需要检查元素是否实际为数字,或者它们是否是包含数字的字符串。以下是使用过滤器的几种解决方案:
function num (arr) {
return arr.filter(c => Number.isInteger(c));
}
function num2 (arr) {
return arr.filter(c => typeof c === 'number');
}
查看以下资源:
Number.isInteger() - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/isInteger
typeof- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof
答案 1 :(得分:0)
这应该可以工作(如果你传递一个没有反斜杠的数组,如[1,'2','a']
)
function filter_list(l) {
return l.filter(c => parseInt(c) >=0 && parseInt(c) <= 999)
}