@Stergy

Как отфильтровать подобный массив?

Есть переменная которая содержит массив из 5 объектов:
Some_variable = [
    element {
                    id:1
                    name: "some_name"
                    type:  "grey"
                    },
   element {
                    id:12
                    name: "some_name"
                    type:  "blue"
                    },
 element {
                    id:124
                    name: "some_name"
                    type:  "green"
                    },
 element {
                    id:126
                    name: "some_name"
                    type:  "yellow"
                    },
 element {
                    id:127
                    name: "some_name"
                    type:  "orange"
                    },
]

и есть массив
arr = ["orange", "blue", "green"]

Вопрос: мне нужно чтобы в первом массиве остались только те элементы, тип (значение type) которых совпадает с каким-нибудь из значений второго массива (arr).
Помогите отфильтровать.
Я новичок, и не понимаю как это сделать.
Нагуглил, что это можно сделать как-то через .map или .filter, но уже битый час не могу это реализовать.
Помогите пожалуйста!!!!
  • Вопрос задан
  • 118 просмотров
Решения вопроса 2
Some_variable = Some_variable.filter(n => !arr.includes(n.type));
Ответ написан
sergiks
@sergiks Куратор тега JavaScript
♬♬
Some_variable = Some_variable.filter( el => !!~arr.indexOf(el.type))


Если нужно, чтобы остались только те типы, которых нет в списке, уберите один воскл. знак.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Zatmil
@Zatmil
Fullstack-разработчик
Some_variable.filter(r => Object.keys(r).reduce((n, p) => arr.indexOf(r[p]) > -1))


upd: Упс поиск по всех ключам элементов =)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы