gpt4 book ai didi

javascript - 如何合并多个对象的数据

转载 作者:行者123 更新时间:2023-12-03 12:23:18 26 4
gpt4 key购买 nike

示例对象:

{
people: [
{
"Name": "Jimmy",
"Place": ["USA", "Canada", "United Kingdom"]
},
{
"Name": "Serena",
"Place": ["USA", "Japan", "Canada", "Thailand"]
},
{
"Name": "Richard",
"Place": ["USA", "Japan", "China", "United Kingdom"]
},
{
"Name": "Rachel",
"Place": ["Germany"]
}
]
}

使用此对象,我需要显示每个地点以及与该地点关联的名称,如下所示:

USA
Jimmy, Serena, Richard

Canada
Jimmy, Serena

Japan
Serena, Richard

Thailand
Serena

China
Richard

United Kingdom
Jimmy, Richard

Germany
Rachel

这是我目前有限的进展。

以我有限的 JavaScript 经验,我似乎无法弄清楚如何做到这一点。使用 underscoreJS,我已经弄清楚如何显示每个人的名字和他们所在的地方,但这不是我想要的。我需要将其合并,如上所示。这是我到目前为止所想到的...

_.each(people, function (value, key) {
var name = person[key].Name;
var place = person[key].Place;
return name + '<br>' + place;
});

哪个输出...

Jimmy
USA,Canada,United Kingdom

Serena
USA,Japan,Canada,Thailand

Richard
USA,Japan,China,United Kingdom

Rachel
Germany

有人可以帮忙吗?我更喜欢使用 underscoreJS 的答案,但我对其他形式的 JavaScript 持开放态度。

最佳答案

只需解析所有国家/地区的数组并添加匹配的名称即可。两个嵌套循环就足够了:

var arr = [/*...*/];// initial array

// object stores the target structure
var store = {};

// for every person in the list ..
arr.forEach(function(person) {
// for every country, the person has visited
person.Place.forEach(function(place) {
// does the store know the country?
if (!store.hasOwnProperty(place)) {
// no, create it
store[place] = [];
}
// add the person the the country
store[place].push(person.Name);
});
});

console.log(store);

demo jsfiddle

关于javascript - 如何合并多个对象的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24342688/

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