过滤JavaScript数组

时间:2018-07-16 20:31:26

标签: javascript

我试图仅从该数组返回1,但是我在弄清楚代码出什么问题时遇到了麻烦。

let arr = [[1],[1,2],[3],[1,2],[4],[1,2],[1]];
let ok = arr.filter((x) => {
  if(x.length > 1){
    return x.filter((y) => {
      return y == 1;
    })
  }else{
    return x == 1;
  }
})
console.log(ok);

2 个答案:

答案 0 :(得分:0)

内部x.filter返回一个新的过滤数组。但这并没有真正使用,因为它被传递给外部过滤器,然后由外部过滤器决定是否要过滤外部过滤器。因此,实际上似乎外部filter应该实际上map

let ok = arr.map(inner => inner.filter(el => el === 1));

尽管代码仍然有效,但您也不需要该if语句。

答案 1 :(得分:0)

Jonas在上面给出了一个很好的答案,尽管我不确定这是要问的。我有一种感觉:)您只需要在原始数组[1]中恰好是arr的数组。如果是这样:

const arr = [[1],[1,2],[3],[1,2],[4],[1,2],[1]];
const ok = arr.filter(el => el.length === 1 && el[0] === 1) // [[1], [1]]