Как я могу отфильтровать вложенный массив без изменения исходного массива? - PullRequest
1 голос
/ 13 июня 2019

Я хотел бы вернуть как внутренний, так и внешний массив, например: [[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 ]

3 голосов
/ 13 июня 2019

Вы можете использовать деструктуризацию массива , чтобы получить легкий доступ к внутренним элементам массива в функции обратного вызова:

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

console.log(array); // original
console.log(filtered); // filtered
1 голос
/ 13 июня 2019

Функции map () и filter () не изменяют массив, они возвращают новый массив с результирующими элементами.

В коде, который вы показываете нам, вы нигде не назначаете результат, также вы пытаетесь сравнить массив с числом:

Если вы хотите вернуть значения внутри их упаковочных массивов, вы должны сделать это так:

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

var newArr = arr.filter(function(inner){
    return inner[0] >= 3;
});

// newArr = [[3], [4], [5]]

вам не нужна функция карты, если вы только фильтруете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...