Как отфильтровать простой многомерный массив только с числами - PullRequest
0 голосов
/ 02 ноября 2019

У меня есть многомерный массив, подобный этому: let arr = [ [1,2,3], [3,4,6], [4,5,7], [8,9,3]];

, и мне нужно использовать только функцию фильтра для фильтрации этого массива. Я должен отфильтровать массив и создать новый массив из текущих внутренних массивов, которые содержат число 3:

let myArr = [ [1,2,3], [3,4,6], [4,5,7], [8,9,3]];
function getVal(value, arr){    
    for(let i in arr){
        for(let j in arr[i]){
            if(arr[i][j] == value){
                return true;
            }
        }
    }

}

let newArr = myArr.filter(getVal(3, myArr));

Мой код не работает. На самом деле, это работает, но я не вижу никакого результата.

Ожидаемый результат примерно такой:

newArr = [[1,2,3], [3,4,6], [8,9,3]];

Все, что я нашел, это методы фильтра собъекты.

Ответы [ 3 ]

3 голосов
/ 02 ноября 2019

Вам нужен другой стиль обратного вызова.

const contains = v => a => a.includes(v);

var array = [[1, 2, 3], [3, 4, 6], [4, 5, 7], [8, 9, 3]],
    result = array.filter(contains(3));

console.log(result);
1 голос
/ 02 ноября 2019

Предполагая, что это 2-мерный массив. Используйте indexOf для проверки внутри массивов:

myArr.filter((a)=> { return a.indexOf(3)>=0})
0 голосов
/ 02 ноября 2019
cont result = arr.filter(a => a.includes(3));
...