Javascript 给定一个对象数组,如何在基于键的数组中合并对象?

Javascript 给定一个对象数组,如何在基于键的数组中合并对象?,javascript,Javascript,如果以下面的数组为例,我希望函数比较每个对象的键,如果是相同的,则将它们合并到新对象 对于内部对象(团队的值),如果键匹配且一个值为所有者,则保留此值并忽略成员,否则保留成员 var array= [{team1 : {tim : OWNER, joe : MEMBER,jane : MEMBER}}, {team1 : {bob : MEMBER, joe : OWNER}}, {team2 : {bob : OWNER, tim : OWNER}}] Re

如果以下面的数组为例,我希望函数比较每个对象的键,如果是相同的,则将它们合并到新对象

对于内部对象(团队的值),如果键匹配且一个值为所有者,则保留此值并忽略成员,否则保留成员

var array= [{team1 : {tim : OWNER, joe : MEMBER,jane : MEMBER}}, 
        {team1 : {bob : MEMBER, joe : OWNER}},
        {team2 : {bob : OWNER, tim : OWNER}}]

Return newTeam1= {tim : Owner, Joe:Owner , Jane : Member} 

这里有一种方法可以有条件地将团队简化为一个对象,每个团队都有标签。名称冲突的成员将在最终输出中解析为一个键
“OWNER”

另外,在您对
“team1”
的结果中,我已经包含了
“team1”
的第二个实例中的Bob,但是您可以通过删除
来删除他!(团队成员)|
。这将忽略第一个团队之后的后续团队中的新成员,除非他们与第一个团队名称冲突,并且是
的“所有者”

var数组=[{team1:{tim:“所有者”,joe:“成员”,jane:“成员”},
{team1:{bob:“成员”,joe:“所有者”},
{team2:{bob:“所有者”,tim:“所有者”}];
console.log(array.reduce)(a,o)=>{
for(o中的施工队){
如果(a组中的团队){
for(o[团队]中的const成员){
如果(!(团队成员)| |团队成员]=“成员”){
a[团队][成员]=o[团队][成员];
}
}
}
否则{
a[团队]=o[团队];
}
}
返回a;

}, {}));有很多流行的库支持深度合并:

var数组=[{team1:{tim:'OWNER',joe:'MEMBER',jane:'MEMBER'},
{team1:{bob:'成员',joe:'所有者'},
{team2:{bob:'OWNER',tim:'OWNER'}]
console.log(u.merge({},…array))

你试过什么吗?此外,它不是一个有效的对象文字。很难理解如何在这方面提供帮助,因为您的示例代码不是有效的javascript。你能不能编辑你得到的东西,使它不会出错。我已经能够处理内部对象的要求,我在比较同一列表中的键时遇到困难。bob发生了什么事。。。