У меня есть массив объектов,
c = [
{
name: 'abc',
category: 'cat1',
profitc: 'profit1',
costc: 'cost1'
},
{
name: 'xyz',
category: '',
profitc: 'profit1',
costc: ''
},
{
name: 'pqr',
category: 'cat1',
profitc: 'profit1',
costc: ''
}
]
Теперь я хочу отфильтровать массив на основе другого массива объектов, второй массив объектов:
arr = [
{
type:'profitc'
value: 'profit1',
},
{
type:'category'
value: 'cat1',
}
]
Теперь arr отображается в раскрывающемся списке с возможностью множественного выбора, а значение ключевого значения в объекте отображается пользователю, т.е. profit1, cat1, et c. Поэтому, если пользователь выбирает profit1
и cat1
, тогда мне нужно отфильтровать массив c
так, чтобы вывод выглядел следующим образом.
c = [
{
name: 'abc',
category: 'cat1',
profitc: 'profit1',
costc: 'cost1'
},
{
name: 'pqr',
category: 'cat1',
profitc: 'profit1',
costc: ''
}
]
Я попытался сделать это.
let result = c.filter(e => {
let istruecat = true
//arr is chosen value from user.
arr.forEach(element => {
istruecat = e[element.type] == element.value;
})
return istruecat;
})
Но когда я делаю это, я получаю все объекты из массива c
. Что я здесь не так делаю? Есть ли способ сделать это с помощью loda sh.