过滤数组中的子数组
Filter subarrays in an array
我一定是疯了。假设我有一个数组数组。我想过滤子数组并最终得到一个过滤子数组的数组。假设我的过滤器是 "greater than 3"。所以
let nested = [[1,2],[3,4],[5,6]]
// [[],[4][5,6]]
在一些下划线 jiggery-pokery 失败后,我尝试了常规的 for 循环。
for (var i = 0; i < nested.length; i++){
for (var j = 0; j < nested[i].length; j++){
if (nested[i][j] <= 3){
(nested[i]).splice(j, 1)
}
}
}
但这只会从第一个子数组中删除 1。我原以为 splice 会改变底层数组,并且长度会被更新以解决这个问题,但也许不会?或者,也许其他事情完全出了问题。可能很明显;没有看到它。感激地接受任何花哨或简单的帮助。
这也许可以做到;
var nested = [[1,2],[3,4],[5,6]],
limit = 3,
result = nested.map(a => a.filter(e => e > limit ));
console.log(result);
如果你没有 ES6 :
var nested = [[1,2],[3,4],[5,6]];
nested.map(
function(x) {
return x.filter(
function(y){
return y > 3
}
)
}
)
我一定是疯了。假设我有一个数组数组。我想过滤子数组并最终得到一个过滤子数组的数组。假设我的过滤器是 "greater than 3"。所以
let nested = [[1,2],[3,4],[5,6]]
// [[],[4][5,6]]
在一些下划线 jiggery-pokery 失败后,我尝试了常规的 for 循环。
for (var i = 0; i < nested.length; i++){
for (var j = 0; j < nested[i].length; j++){
if (nested[i][j] <= 3){
(nested[i]).splice(j, 1)
}
}
}
但这只会从第一个子数组中删除 1。我原以为 splice 会改变底层数组,并且长度会被更新以解决这个问题,但也许不会?或者,也许其他事情完全出了问题。可能很明显;没有看到它。感激地接受任何花哨或简单的帮助。
这也许可以做到;
var nested = [[1,2],[3,4],[5,6]],
limit = 3,
result = nested.map(a => a.filter(e => e > limit ));
console.log(result);
如果你没有 ES6 :
var nested = [[1,2],[3,4],[5,6]];
nested.map(
function(x) {
return x.filter(
function(y){
return y > 3
}
)
}
)