javascript - 如何找出列表的外部属性
问题描述
我有这个清单
myList = [
{
id: 1,
slug: "fruits",
title: "Fruits",
types: [
{
id: 1,
name: 'mango',
price: '200'
},
{
id: 2,
name: 'grape',
price: '500'
},
{
id: 3,
name: 'banana',
price: '200'
}
]
},
{
id: 2,
slug: "veggies",
title: "Veggies",
types: [
{
id: 4,
name: 'brocolli',
price: '200'
},
{
id: 5,
name: 'tomato',
price: '500'
}
]
},
]
假设我只有一个信息,即属性id
内的对象的信息types
。例如,我有 id = 2 的葡萄。我怎么知道它grape
是fruits
对象的一部分?我想找到与 相关的 slug,grape
即fruits
. 我仍然对这里的逻辑感到困惑。也很抱歉,如果我的问题标题是错误的,我不知道这个问题的关键字。谢谢!
解决方案
您可以使用嵌套Array.find()
来在列表中搜索列表。
function findGroupFromTypeId(id, list) {
const group = list.find(item => {
return item.types.find(type => type.id === id) !== undefined;
});
if (group) {
return group.slug;
}
return 'not found';
}
const myList = [
{
id: 1,
slug: "fruits",
title: "Fruits",
types: [
{
id: 1,
name: 'mango',
price: '200'
},
{
id: 2,
name: 'grape',
price: '500'
},
{
id: 3,
name: 'banana',
price: '200'
}
]
},
{
id: 2,
slug: "veggies",
title: "Veggies",
types: [
{
id: 4,
name: 'brocolli',
price: '200'
},
{
id: 5,
name: 'tomato',
price: '500'
}
]
},
];
console.log(findGroupFromTypeId(1, myList));
console.log(findGroupFromTypeId(4, myList));
console.log(findGroupFromTypeId(999, myList));
推荐阅读
- database - 如何按创建日期删除 MongoDB 中的数据?
- jquery - 单击时如何使包含下拉列表的导航栏变暗?
- javascript - 用 saga 和 typescript 连接 redux-form
- angular - 堆栈跟踪中的 Subject.js 随机超出最大调用堆栈
- reactjs - 如果路由匹配但没有该 id 值的数据,则重定向
- cors - GeoSever REST API - CORS 阻塞
- excel - 如何使单元格中的某些文本变为粗体?
- html - Bootstrap 4图像半页宽度
- angular - 为什么我可以在不导入其提供程序模块的情况下使用服务?
- reactjs - redux:调度不起作用