Фильтрация массива с объектами с помощью другого массива со строками - PullRequest
0 голосов
/ 16 мая 2018

У меня есть 2 массива, и я хочу отфильтровать один из массивов с другим массивом.

2 массива, сконструированных таким образом

array1= [{id:23},{id:11},{id:435}]

array2= [23, 435, 5]

Я хочу проверять и получать элементы только в том случае, если id объектов внутри array1 равен одному из идентификаторов (строковых значений) в array2

Я нашел простое решение, подобное этому

var filtered=[1,2,3,4].filter(function(e){return this.indexOf(e)<0;},[2,4]);

, но мой случай немного отличается, я не знаю, как сделать возвращаемую часть, как я могу получить индексы каждого массива?

var filtered=array1.filter(function(e){return e.id === ??},array2);

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Вы можете просто просмотреть индекс, используя свойство id.

var array1 = [{ id: 23 }, { id: 11 }, { id: 435 }],
    array2 = [23, 435, 5],
    filtered = array1.filter(function (o) {
        return array2.indexOf(o.id) > -1;
    });
    
console.log(filtered);

ES6

var array1 = [{ id: 23 }, { id: 11 }, { id: 435 }],
    array2 = [23, 435, 5],
    filtered = array1.filter(({ id }) => array2.includes(id));
    
console.log(filtered);
0 голосов
/ 16 мая 2018

Вы можете использовать .filter и по существу проверить, существует ли объект id в array2.Есть несколько способов сделать это, включая .find и .findIndex.Я бы использовал .some, который возвращает true, если найдено одно совпадение.

array1.filter(obj => array2.some(id => id === obj.id));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...