如何删除\' a \'等值。从一个带有javascript的数组

时间:2018-03-11 03:54:44

标签: javascript

我在代码战中遇到了这个挑战,我必须将数组中的数字作为新数组返回并忽略所有非数字。

我收到了类似的内容[' 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\']

的情况下获得了[]

我该怎么办?

2 个答案:

答案 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)
}