我试图仅从该数组返回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);
答案 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]]