javascript - 如何根据 Javascript 中的属性组合两个不同大小的对象数组?

标签 javascript arrays object javascript-objects

我有两个长度不同但共享相似信息的对象数组。

qrySearchLocID = [{
    LocalLabID: '123f',
    SystemID: 5000152,
    AppLabID: 3
  },
  {
    LocalLabID: '12BC',
    SystemID: 5000384,
    AppLabID: 3
  },
];

qrySearch = [{
    sName: 'SomePlace1',
    lBusinessID: 37343,
    SystemID: 5000152
  },
  {
    sName: 'SomePlace2',
    lBusinessID: 39780,
    SystemID: 5000156
  },
  {
    sName: 'SomePlace3',
    lBusinessID: 50772,
    SystemID: 5000519
  },
  {
    sName: 'SomePlace4',
    lBusinessID: 31079,
    SystemID: 5000384
  },
]

我想根据 SystemID 组合这两个数组,从 qrySearch 复制所有信息并从 qrySearchLocID 添加 LocalLabID,仅此而已。例如我希望结果数组是

[{
    sName: 'SomePlace1',
    lBusinessID: 37343,
    SystemID: 5000152,
    LocalLabID: '123f'
  },
  {
    sName: 'SomePlace2',
    lBusinessID: 39780,
    SystemID: 5000156
  },
  {
    sName: 'SomePlace3',
    lBusinessID: 50772,
    SystemID: 5000519
  },
  {
    sName: 'SomePlace4',
    lBusinessID: 31079,
    SystemID: 5000384,
    LocalLabID: '12BC'
  },
]

提前致谢。

最佳答案

您可以使用mapfind 函数。

var qrySearchLocID = [{
    LocalLabID: '123f',
    SystemID: 5000152,
    AppLabID: 3
  },
  {
    LocalLabID: '12BC',
    SystemID: 5000384,
    AppLabID: 3
  },
];

var qrySearch = [{
    sName: 'SomePlace1',
    lBusinessID: 37343,
    SystemID: 5000152
  },
  {
    sName: 'SomePlace2',
    lBusinessID: 39780,
    SystemID: 5000156
  },
  {
    sName: 'SomePlace3',
    lBusinessID: 50772,
    SystemID: 5000519
  },
  {
    sName: 'SomePlace4',
    lBusinessID: 31079,
    SystemID: 5000384
  },
];

var result = qrySearch.map((e, _) => 
          (_ = qrySearchLocID.find((q) => q.SystemID === e.SystemID)) ? 
          { ...e, ...{ LocalLabID: _.LocalLabID } } : e);

console.log(result);

资源

关于javascript - 如何根据 Javascript 中的属性组合两个不同大小的对象数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48571919/

相关文章:

javascript - 一种表单需要两个操作(一个本地,一个远程)

javascript - 使用 jQuery 回退为 Zepto 编写自定义插件

javascript - 如何构建一个按点击计数但仅显示奇数的响应组件的答题器?

c++ - std::array 和 std::vector 有什么区别?你什么时候使用一个而不是另一个?

javascript - 无法使用过滤器过滤多个字段

c++ - 将 Win32 应用程序转换为对象

java - 对象中的字符串不等于 ArrayList 中同一对象的字符串

javascript - 提交表单后自动刷新页面 - ElectronJS

c# - 你调用的对象是空的

c++ - 使用指向对象的指针进行析构