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

FEd*_*per 3 javascript arrays merge object reactjs

我有 2 个独立的 JS 对象,它们需要合并到同一个属性中。

对象目前看起来像这样:

对象 1:

[0:{"acircuit":"ABCDEFGH","astatus":"Test"}, 1:{"acircuit":"IJKLMNOP","astatus":"Test2"}]
Run Code Online (Sandbox Code Playgroud)

对象 2:

[0:{"bcircuit":"ABCDEFGH","bstatus":"Test3"}, 1:{"bcircuit":"IJKLMNOP","bstatus":"Test4"}]
Run Code Online (Sandbox Code Playgroud)

我需要将这些结果合并为一个结果,如下所示:

[
    0:{"acircuit":"ABCDEFGH","astatus":"Test","bcircuit":"ABCDEFGH","bstatus":"Test3"}, 
    1:{"acircuit":"IJKLMNOP","astatus":"Test2","bcircuit":"IJKLMNOP","bstatus":"Test4"}
]
Run Code Online (Sandbox Code Playgroud)

当前代码如下所示:

allResults = {this.state.aCircuitResults.concat(this.state.bCircuitResults)}
Run Code Online (Sandbox Code Playgroud)

但是,结果如下所示:

[
    0:{"acircuit":"ABCDEFGH","astatus":"Test"},
    1:{"acircuit":"IJKLMNOP","astatus":"Test2"}
    2:{"bcircuit":"ABCDEFGH","bstatus":"Test3"}, 
    3:{"bcircuit":"IJKLMNOP","bstatus":"Test4"}
]
Run Code Online (Sandbox Code Playgroud)

提前致谢。

T.J*_*der 5

您可以使用mapand Object.assign,假设您想按它们在数组中的位置组合它们:

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

例子:

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

如果您需要通过属性(例如,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)));
Run Code Online (Sandbox Code Playgroud)

例子:

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);
Run Code Online (Sandbox Code Playgroud)