gpt4 book ai didi

javascript - 查找对象和数组中的嵌套值之间的匹配

转载 作者:行者123 更新时间:2023-12-03 00:09:27 25 4
gpt4 key购买 nike

我有两个数组:

首先,我有一个包含人员信息的对象数组,以及一个包含他们从类别列表中做出的选择的数组。

在第二个中,我有一个对象数组,其中包含第一个数组中的人可以从中进行选择的类别。每个类别对象内部都有一个类别标题和一个选择数组,我希望其中包含选择此类别的玩家列表。

我需要根据每个类别选择类别的人数来渲染用户界面中的元素。我想知道我是否可以迭代第一个数组中具有类别标题的人员选择,在第二个数组中找到匹配的类别标题,并将该人员信息从第一个数组推送到第二个。

我绝对愿意重组这些数组,但第二个数组包含更多信息,与此问题无关,并且更愿意保持原样。我必须对第一个数组进行硬编码,因为我只是从发送给我的电子邮件中获取该信息,目前我无法在选择一个人时将其选择插入第二个数组。

下面是我想要实现的目标的示例。

listOfPeople: [
{
personName: 'Eric Smith',
selections: [
{
categoryTitle: 'Fruit',
categoryItem: 'Apple',
},
{
categoryTitle: 'Animals',
categoryItem: 'Dog',
},
{
categoryTitle: 'Cars',
categoryItem: 'Ford'
},
]
},
{
personName: 'Sarah Edwards',
selections: [
{
categoryTitle: 'Shoes',
categoryItem: 'Running Shoe',
},
{
categoryTitle: 'Animals',
categoryItem: 'Cat',
},
]
}
],
listOfCategories: [
{
categoryTitle: 'Fruit',
peopleWhoSelected: [
{
personName: 'Eric Smith',
categoryItem: 'Apple',
},
]
},
{
categoryTitle: 'Animals',
peopleWhoSelected: [
{
personName: 'Eric Smith',
categoryItem: 'Dog',
},
{
personName: 'Sarah Edwards',
categoryItem: 'Cat',
},
]
},
{
categoryTitle: 'Cars',
peopleWhoSelected: [
{
personName: 'Eric Smith',
categoryItem: 'Ford',
},
]
},
]

最佳答案

如果您可以简化第一个对象,我建议您这样做:

const people =
{
"Eric Smith": {
"Fruit": "Apple",
"Animals": "Dog",
"Cars": "Ford"
},
"Sarah Edwards": {
"Shoes": "Running Shoe",
"Animals": "Cat"
}
}

您可以直接获得人们选择的内容。

然后将一个人的选择插入第二个数组:

Object.entries(people).forEach(([person, categories]) => 
Object.entries(categories).forEach(([title, item]) => {
let category = listOfCategories.find(c => c.categoryTitle == title)
// Create category if we didn't find it
if (!category) {
category = {
categoryTitle: title,
peopleWhoSelected: []
}
listOfCategories.push(category)
}
// Add item selected and person name to category
category.peopleWhoSelected.push({
personName: person,
categoryItem: item
})
}))

这里有一个工作示例(打开控制台查看结果):https://jsfiddle.net/1pxhvo5k/

希望这有帮助:)

关于javascript - 查找对象和数组中的嵌套值之间的匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54813238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com