我试图从这个数组中只返回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);
发布于 2018-07-17 04:36:28
你的内部x.filter
返回一个新的过滤数组。但这并没有真正使用,因为它被传递给外部筛选器,然后它将决定是否过滤外部筛选器。所以实际上看起来外部filter
实际上应该是map
let ok = arr.map(inner => inner.filter(el => el === 1));
您也不需要该if
语句,因为代码仍然可以工作。
发布于 2018-07-17 04:44:59
Jonas在上面给了一个非常好的答案,尽管我不确定这是不是被问到的。我有一种感觉:)你只需要在原始数组arr
中精确为[1]
的数组。如果是这样的话:
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]]
https://stackoverflow.com/questions/51369688
复制相似问题