javascript - 根据共同共享的 id 组合两个数组上的对象

标签 javascript arrays ecmascript-6

我有两个包含对象的数组。第一个数组上的对象包含 idnameage

我尝试了在 StackOverflow 上找到的许多答案,例如 this onethis one以及在线其他地方,但事实证明这非常棘手,我无法使其正常工作。

var arrOne = [
  {id: 1, name: 'Raul', age: 18},
  {id: 2, name: 'Sarah', age: 20},
  {id: 3, name: 'Sanchez', age: 30}
];

第二个数组包含与第一个数组中的用户相关的 id 以及关联的图像。

var arrOne = [
  {id: 1, image: 'raulrod.jpg'},
  {id: 2, image: 'saz.jpg'},
  {id: 1, image: 'hola.jpg'},
  {id: 3, image: 'qtal.jpg'},
  {id: 1, image: 'senor.jpg'},
  {id: 3, image: 'ciao.jpg'},
];

将它们组合后,我正在寻找这样的结果,每个对象根据id组合两个数组中的对象。

var finalArr = [
  {id: 1, name: 'Raul', age: 18 image: 'raulrod.jpg'},
  {id: 1, name: 'Raul', age: 18 image: 'hola.jpg'},
  {id: 1, name: 'Raul', age: 18 image: 'senor.jpg'},
  {id: 2, name: 'Raul', age: 20 image: 'saz.jpg'}
  {id: 3, name: 'Raul', age: 30 image: 'ciao.jpg'},
  {id: 3, name: 'Raul', age: 30 image: 'qtal.jpg'},
];

最佳答案

使用普通的 ES6,您可以使用 arrOne 的属性和 Array#find 映射一个新对象。 ,arrTwo相关对象的属性。

如果需要,您可以稍后按 id 对结果进行排序。

var arrOne = [{ id: 1, name: 'Raul', age: 18 }, { id: 2, name: 'Sarah', age: 20 }, { id: 3, name: 'Sanchez', age: 30 }],
    arrTwo = [{ id: 1, image: 'raulrod.jpg' }, { id: 2, image: 'saz.jpg' }, { id: 1, image: 'hola.jpg' }, { id: 3, image: 'qtal.jpg' }, { id: 1, image: 'senor.jpg' }, { id: 3, image: 'ciao.jpg' }],
    result = arrTwo.map(a => Object.assign({}, a, arrOne.find(b => a.id === b.id)));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 根据共同共享的 id 组合两个数组上的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46056623/

相关文章:

javascript - 显示对象属性未排序

javascript - ES6 promise : how to chain functions with arguments

javascript - 需要对象字面量函数中 switch case 的默认值的等效项

javascript - "Script"范围下的类别

Python JSON 添加键值对

ios - 按日期对自定义对象数组进行排序和分段

javascript - 使用 clearTimeout 停止顺序功能/动画?

javascript - 网络 worker sleep

javascript - 编写分支渲染的 ReactJS 组件

每个javascript和jquery数组