如何在不更改原始数组的情况下过滤嵌套数组?

时间:2019-06-13 03:00:44

标签: javascript functional-programming

我想同时返回内部数组和外部数组,例如:[[3],[4],[5]];

这不起作用:

var arr = [[1],[2],[3],[4],[5]];

arr.filter(function(el){
    return el.filter(function(inner){
        return inner >= 3;
    });
});

这也不起作用:

var arr = [[1],[2],[3],[4],[5]];

arr.map(function(el){
    return el.filter(function(inner){
        return inner >= 3;
    });
});

2 个答案:

答案 0 :(得分:3)

您可以使用array destructuring轻松访问回调函数中的内部数组元素:

const array = [[1],[2],[3],[4],[5]];
const filtered = array.filter(([inner]) => inner >= 3);

console.log(array); // original
console.log(filtered); // filtered

答案 1 :(得分:1)

map()和filter()函数不会改变数组,它们会返回一个包含结果项的新数组。

在显示给我们的代码中,您没有将结果分配到任何地方,而且,您正在尝试将数组与数字进行比较:

如果您想返回其包装数组内部的值,则可以这样做:

LocalBroadcastManager

仅过滤时就不需要map功能。