javascript - javascript中根据key合并对象

标签 javascript json ecmascript-6 lodash

我有 4 个独立的对象数组,有没有一种方法可以根据对象内部的键将它们全部连接到一个大对象中。

这是一个例子 输出:我想要实现的目标。

[
{
    "bugId": "",
    "testerId": "",
    "firstName": "",
    "lastName": "",
    "country": "",
    "deviceId":"",
    "description":""
}
]
<小时/>

测试人员对象(超过500个)

[  
   {  
      "testerId":"1",
      "firstName":"John",
      "lastName":"Doe",
      "country":"US",
   }
]

bugId 的对象(这应该是我们能够获取输出的主要对象) 由于 deviceId 连接到 descriptiontesterId 连接到 firstNamelastName国家

[  
   {  
      "bugId":"1",
      "deviceId":"1",
      "testerId":"1"
   }
]

tester_devices对象,为一名测试仪提供4台设备

[  
   {  
      "testerId":"1",
      "deviceId":"1"
   },
   {  
      "testerId":"1",
      "deviceId":"2"
   },
   {  
      "testerId":"1",
      "deviceId":"3"
   },
   {  
      "testerId":"1",
      "deviceId":"10"
   }
]

设备对象

[  
   {  
      "deviceId":"1",
      "description":"iPhone 4"
   }
]

我搜索了Lodash图书馆,但是 here 提到对于同名的键是不可能合并的。我应该采取什么方法?

最佳答案

将测试仪和设备收集到单独的 Maps 中使用Array#reduce 。 使用 Array#map 迭代 bugs 数组,并使用 Object#assign 按 id 组合两个 Map 中的对象:

const testers = [{"testerId":"1","firstName":"John","lastName":"Doe","country":"US"}];
const bugs = [{"bugId":"1","deviceId":"1","testerId":"1"}];
const devices = [{"deviceId":"1","description":"iPhone 4"}];

const createMap = (arr, key) => arr.reduce((m, o) => m.set(o[key], o), new Map());

const testersMap = createMap(testers, 'testerId');
const devicesMap = createMap(devices, 'deviceId');

const merged = bugs.map(({ bugId, testerId, deviceId }) => Object.assign({ bugId }, testersMap.get(testerId), devicesMap.get(deviceId)));

console.log(merged);

关于javascript - javascript中根据key合并对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47385036/

相关文章:

javascript - 如何在没有突变的情况下分配条件变量?

javascript - 在 React.js 中将字符串转换为真正的 HTML

javascript - 重写 webpack 中全局模块的方法

javascript - 切换设备工具栏时 React Js 元素不会调整大小

javascript - 如何中止 $.post 请求

javascript - 如何使用发布请求打开新选项卡?

javascript - 如何使用扩展运算符更改对象的嵌套属性?

javascript - 使用 Ramda 处理 Promise 和 Wait

java - 如何获取 json 中的 applet 值作为输出

javascript - 如何在 ES6 javascript 中实现 MVC?