合并具有相同键的对象

时间:2018-04-20 18:05:05

标签: javascript object

当我在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这样的东西时,最后一个对象只会覆盖前一个对象,还有另一种方法吗?我基本上只想合并几个对象,并忽略它们的索引。

4 个答案:

答案 0 :(得分:1)

看起来你拥有的是一个数组。

您可以使用点差运算符。

让我们分别调用您的两个数组arrayOnearrayTwo

代码如下:

const newArray = [...arrayOne, ...arrayTwo];

答案 1 :(得分:1)

你可以使用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)




答案 2 :(得分: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);

答案 3 :(得分: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; }