У меня есть массив объектов. Образец объекта выглядит так
{
dish_name: { id: 1297, name: "Bellingham Estate Sauvignon Blanc" },
dish_has_categories: [
{
dishCatId: 11
},
{
dishCatId: 12
}
],
id:1
},
Я хочу отфильтровать объекты, где массив dish_has_categories должен иметь объект, где dishCatId = 11, а также я хочу отобразить этот массив в минимальном формате.
Это мой набор данных.
const data = [
{
dish_name: { id: 1297, name: "Bellingham Estate Sauvignon Blanc" },
dish_has_categories: [
{
dishCatId: 11
},
{
dishCatId: 12
}
],
id:1
},
{
dish_name: { id: 3432, name: "Burger" },
dish_has_categories: [
{
dishCatId: 7
},
{
dishCatId: 9
}
],
id:2
},
{
dish_name: { id: 4593, name: "Hoppers" },
dish_has_categories: [
{
dishCatId: 11
},
{
dishCatId: 12
}
],
id:3
},
{
dish_name: { id: 8709, name: "Bulsai" },
dish_has_categories: [
{
dishCatId: 2
},
{
dishCatId: 6
}
],
id:4
}
];Это мои ожидаемые результаты.
[
{
name: "Bellingham Estate Sauvignon Blanc",
id: 1
},
{
name: "Hoppers",
id: 3
}
];Для фильтрации, которую я сделал
data.filter(e=> e.dish_has_categories.find(el=> el.dishCatId = 11))
Но похоже не работает. Как мне добиться этого с помощью JavaScript?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Измените присваивание = на оператор строгого равенства ===, например:
const data = [ { dish_name: { id: 1297, name: "Bellingham Estate Sauvignon Blanc" }, dish_has_categories: [ { dishCatId: 11 }, { dishCatId: 12 } ], id:1 }, { dish_name: { id: 3432, name: "Burger" }, dish_has_categories: [ { dishCatId: 7 }, { dishCatId: 9 } ], id:2 }, { dish_name: { id: 4593, name: "Hoppers" }, dish_has_categories: [ { dishCatId: 11 }, { dishCatId: 12 } ], id:3 }, { dish_name: { id: 8709, name: "Bulsai" }, dish_has_categories: [ { dishCatId: 2 }, { dishCatId: 6 } ], id:4 } ];
const result = data
.filter(e=> e.dish_has_categories.find(el => el.dishCatId === 11))
.map(res=>({id: res.id, name: res.dish_name.name}));
console.info(result)
el.dishCatId = 11, который присваивает11el.dishCatId. Вы хотите проверить равенство, поэтому используйте==или===