Фильтрафия массива js
Нужно сравнить два массива и вернуть allItems с объектами, которые содержат значение из selectedItems
selectedItems ['Январь', 'Март']
allItems: [
{
id:19
names: {
en:null
ru:"Январь"}
},
{
id:20
names: {
en:null
ru:"Февраль"},
},
{
id:21
names: {
en:null
ru:"Март"},
]
Ответы (2 шт):
Автор решения: Rynay
→ Ссылка
allItems.filter(item => selectedItems.includes(item.names.ru)) // Вернет новый массив совпавших объектов.
Автор решения: Aziz Umarov
→ Ссылка
Можно и по другому отфильтровать, через reduce
let selectedItems = ['Январь', 'Март'];
let allItems = [{
id:19,
names: { en:null, ru:"Январь"}
},
{
id:20,
names: { en:null, ru:"Февраль"}
},
{
id:21,
names: { en:null, ru:"Март"}
}
];
let result = allItems.reduce( (acc, item) => (selectedItems.includes(item.names.ru) && acc.push(item), acc) , []);
console.log(result);