У меня есть массив объектов, как показано ниже:
pages= [
{
"id":1,
"name":"name1",
"languages":[
{
"id":1,
"lang":"en"
},
{
"id":2,
"lang":"de"
}
]
},
{
"id":2,
"name":"name2",
"languages":[
{
"id":1,
"lang":"en"
},
{
"id":2,
"lang":"de"
}
]
},
{
"id":3,
"name":"name3",
"languages":[
{
"id":1,
"lang":"en"
}
]
}
]
И массив языков (они будут установлены нажатием на флажки), как показано ниже:
selectedLanguages=['en'];
Теперь я хочу отфильтровать основной массив в зависимости от значений selectedLanguages
. Я пробовал с кодом ниже:
pages.filter(page => {
var present = false;
page.languages.map(l => {
if(selectedLanguages.includes(l.lang)) {
present = true;
}
});
if(present) {
return page;
}
})
Желаемый результат: если selectedLanguages = ['en']
, то все элементы из pages
, если de
, то первые 2 элемента.
Это работает, но мне любопытно, смогу ли я сделать это лучше?
Любые предложения будут полезны :) Спасибо.