合并具有相同键的对象

3

我有几个对象,当我使用console.log进行打印时,它们看起来像这样:

0: { 'school': {}, 'district': {}, 'children': {} }
1: { 'school': {}, 'district': {}, 'children': {} }
2: { 'school': {}, 'district': {}, 'children': {} }

并且

0: { 'teacher': {}, 'name': {}, 'class': {} }
1: { 'teacher': {}, 'name': {}, 'class': {} }

我希望将这些对象合并,使它们变成如下的形式:
0: { 'school': {}, 'district': {}, 'children': {} }
1: { 'school': {}, 'district': {}, 'children': {} }
2: { 'school': {}, 'district': {}, 'children': {} }
3: { 'teacher': {}, 'name': {}, 'class': {} }
4: { 'teacher': {}, 'name': {}, 'class': {} }

但是当我使用像 Object.assign 这样的方法时,最后一个对象将覆盖前面的对象,有没有其他方法可以实现这个功能?我基本上只想合并多个对象,并忽略它们的索引。


它们看起来像数组,而不是对象。在这种情况下应该使用Array.concat。 - juvian
1
如果您不关心键,只需将它们制作成一个数组:const foo = [...Object.values(obj1), ...Object.values(obj2)] - Jared Smith
将它们全部推到一个数组中。 - Muhammad Usman
4个回答

1
似乎你拥有的是一个数组。
你可以使用扩展运算符。
我们分别称你的两个数组为arrayOne和arrayTwo。
代码如下:
const newArray = [...arrayOne, ...arrayTwo];

一个小问题,OP给出了对象,你需要像我上面的评论中那样调用Object.values - Jared Smith

1

you can use spread operator

const arr1 = [
 { 'school': {}, 'district': {}, 'children': {} },
 { 'school': {}, 'district': {}, 'children': {} },
 { 'school': {}, 'district': {}, 'children': {} }
]

const arr2 = [
 { 'teacher': {}, 'name': {}, 'class': {} },
 { 'teacher': {}, 'name': {}, 'class': {} }
]

const result = [...arr1, ...arr2]

console.log(result)


@nxmohamad 先你一步了。 - Jared Smith
@JaredSmith 晚了50秒 :P ,但是Object.values更准确。 - Taki
1
技术上我比他快了15秒,但我只是在评论中留下了这个事实。 - Jared Smith

0

var array1 = [{ 'school': {}, 'district': {}, 'children': {} },
{ 'school': {}, 'district': {}, 'children': {} },
{ 'school': {}, 'district': {}, 'children': {} }];

var array2 = [ { 'teacher': {}, 'name': {}, 'class': {} },
{ 'teacher': {}, 'name': {}, 'class': {} }];

while(array2.length>0){
array1.push(array2.shift());
}
console.log(array1);


0
你可以将对象的值连接起来,并将数组指定给一个对象。

var obj1 = { 0: { 'school': {}, 'district': {}, 'children': {} }, 1: { 'school': {}, 'district': {}, 'children': {} }, 2: { 'school': {}, 'district': {}, 'children': {} } },
    obj2 = { 0: { 'teacher': {}, 'name': {}, 'class': {} }, 1: { 'teacher': {}, 'name': {}, 'class': {} } };
    obj3 = Object.assign({}, Object.values(obj1).concat(Object.values(obj2)));

console.log(obj3);
.as-console-wrapper { max-height: 100% !important; top: 0; }


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接