javascript - 如何过滤多个对象的数组?
问题描述
我有一组被模拟的多个对象,并且想要根据 t_name_food 进行过滤。
this.lista_categoria_food = [
{
n_id: 1,
t_nome_categorie: 'Main Dishes',
t_image: 'Service.jpg',
list_food: [
{ n_id: 1,
t_name_food: 'dish 1 ',
t_price_food: 20,
n_quantity: 0,
t_quantity: 'piece' },
{ n_id: 2,
t_name_food: 'dish 2',
t_price_food: 20,
n_quantity: 0,
t_quantity: 'piece' },
]
},
{
n_id: 2,
t_nome_categorie: 'Appetizers',
t_image: 'restaurant.jpg',
list_food: [
{ n_id: 1,
t_name_food: 'food 1',
t_price_food: 20,
n_quantity: 0,
t_quantity: 'piece' },
{ n_id: 2,
t_name_food: 'food 2',
t_price_food: 20,
n_quantity: 0,
t_quantity: 'piece' },
]
},
]
过滤器应重新运行与 t_name_food 匹配的产品列表。
直到现在都试图过滤对象的项目。
this.lista_categoria_food = this.filterFeeds.forEach((item) => {
item.list_food.filter(e =>
{
if(e.t_name_food.toLowerCase().includes(searchTerm.toLowerCase())) {
return e;
} }) },
);
解决方案
EDITED 由 t_name_food 中包含的字符串过滤 =>
let filtered = [];
this.lista_categoria_food.forEach(val => {
val.list_food = val.list_food.filter(innerVal => {
return innerVal.t_name_food.includes('dish 1')
});
if(val.list_food.length > 0) filtered.push(val);
});
现在过滤的新数组只包含必要的 t_name_food。
按特定字符串过滤 =>
您可以像这样按 t_name_food 过滤:
let filtered = this.lista_categoria_food.filter(val => {
return val.list_food.filter(innerVal => {
return innerVal.t_name_food === ('dish 1 ')}
).length > 0
});
外部过滤器由内部过滤器列表长度的长度过滤。我双重过滤盘子。
在上面的例子中,我用“dish 1”过滤了它。
推荐阅读
- python - 在 Colab 中将 NonType 转换为张量
- c# - 在我输入 C# 时将文本格式化为货币
- python - 尽管使用了allow_growth = True,为什么keras model.fit会使用这么多内存?
- json - 为什么 JSON 文本从 struct 转换为 JSON Swift 5 后的变量顺序与 struct 不同
- python - 如何将 sklearn 管道转换为 pyspark 管道?
- java - MailJet 无法从 java 电子邮件发送:( 400 Bad Request )
- python - 在嵌套回归器上使用 Pipeline 和 TransformedTargetRegressor 处理数据和目标缩放
- laravel - 在 laravel 模型中创建常量,同时使用另一个常量作为数组中的键
- javascript - 如何将锚点添加到 React 动态生成的 Div 列表中?
- android - 具有透明背景的图像开始在android studio中拥有一个