在JavaScript中,如何将两个对象合并到同一个属性中?

3

我有2个分开的JS对象需要合并到同一属性中。

这些对象目前如下所示:

对象1:

[0:{"acircuit":"ABCDEFGH","astatus":"Test"}, 1:{"acircuit":"IJKLMNOP","astatus":"Test2"}]

对象 2:

[0:{"bcircuit":"ABCDEFGH","bstatus":"Test3"}, 1:{"bcircuit":"IJKLMNOP","bstatus":"Test4"}]

我需要将这些结果合并成一个,以便呈现如下:
[
    0:{"acircuit":"ABCDEFGH","astatus":"Test","bcircuit":"ABCDEFGH","bstatus":"Test3"}, 
    1:{"acircuit":"IJKLMNOP","astatus":"Test2","bcircuit":"IJKLMNOP","bstatus":"Test4"}
]

目前的代码如下所示:

allResults = {this.state.aCircuitResults.concat(this.state.bCircuitResults)}

然而,结果看起来像这样:

[
    0:{"acircuit":"ABCDEFGH","astatus":"Test"},
    1:{"acircuit":"IJKLMNOP","astatus":"Test2"}
    2:{"bcircuit":"ABCDEFGH","bstatus":"Test3"}, 
    3:{"bcircuit":"IJKLMNOP","bstatus":"Test4"}
]

提前致谢。

2个回答

5
你可以使用 mapObject.assign,假设你想根据数组中的位置将它们合并:
const result = firstArray.map((firstObject, index) => Object.assign({}, firstObject, secondArray[index]));

示例:

const firstArray = [{"acircuit":"ABCDEFGH","astatus":"Test"},{"acircuit":"IJKLMNOP","astatus":"Test2"}];

const secondArray = [{"bcircuit":"ABCDEFGH","bstatus":"Test3"},{"bcircuit":"IJKLMNOP","bstatus":"Test4"}];

const result = firstArray.map((firstObject, index) => Object.assign({}, firstObject, secondArray[index]));

console.log(result);

如果您需要通过一个属性(例如,acircuitbcircuit)来将它们关联起来,则可以使用其中一个构建一个按属性键控的Map,然后您可以在map操作中进行查找:

const second = new Map(secondArray.map(obj => [obj.bcircuit, obj]));
const result = firstArray.map(firstObject => Object.assign({}, firstObject, second.get(firstObject.acircuit)));

例子:

const firstArray = [{"acircuit":"ABCDEFGH","astatus":"Test"},{"acircuit":"IJKLMNOP","astatus":"Test2"}];

const secondArray = [{"bcircuit":"ABCDEFGH","bstatus":"Test3"},{"bcircuit":"IJKLMNOP","bstatus":"Test4"}];

const second = new Map(secondArray.map(obj => [obj.bcircuit, obj]));
const result = firstArray.map(firstObject => Object.assign({}, firstObject, second.get(firstObject.acircuit)));

console.log(result);


1
那样做很好 - 感谢您的帮助和快速响应。 - FEdevloper

1

使用Array.prototype.map()展开语法相结合:

const result = arrayA.map((a, i) => ({...a, ...arrayB[i]}));

Complete snippet:

const arrayA = [{"acircuit":"ABCDEFGH","astatus":"Test"}, {"acircuit":"IJKLMNOP","astatus":"Test2"}];
const arrayB = [{"bcircuit":"ABCDEFGH","bstatus":"Test3"}, {"bcircuit":"IJKLMNOP","bstatus":"Test4"}];

const result = arrayA.map((a, i) => ({...a, ...arrayB[i]}));

console.log(result);


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