根据每个对象中关键属性的连接来合并/扩展 javascript 对象数组
我想通过首先加入 id 属性来合并以下对象数组,
var arr1 = [{
id: 1,
name: 'fred',
title: 'boss'
},{
id: 2,
name: 'jim',
title: 'nobody'
},{
id: 3,
name: 'bob',
title: 'dancer'
}];
var arr2 = [{
id: 1,
wage: '300',
rate: 'day'
},{
id: 2,
wage: '10',
rate: 'hour'
},{
id: 3,
wage: '500',
rate: 'week'
}];
因此结果是
[{
id: 1,
name: 'fred',
title: 'boss',
wage: '300',
rate: 'day'
},{
id: 2,
name: 'jim',
title: 'nobody',
wage: '10',
rate: 'hour'
},{
id: 3,
name: 'bob',
title: 'dancer',
wage: '500',
rate: 'week'
}]
我想避免使用 js 框架(如果可能),尽管 ExtJs 已经是该项目的一部分。 目前我有一个带有内部循环的循环,如果键匹配,它会复制属性并脱离内部循环以启动下一个外部循环。
还有更好的建议吗?
I am wanting to merge the following object arrays, by first joining on the id property
var arr1 = [{
id: 1,
name: 'fred',
title: 'boss'
},{
id: 2,
name: 'jim',
title: 'nobody'
},{
id: 3,
name: 'bob',
title: 'dancer'
}];
var arr2 = [{
id: 1,
wage: '300',
rate: 'day'
},{
id: 2,
wage: '10',
rate: 'hour'
},{
id: 3,
wage: '500',
rate: 'week'
}];
So the result would be
[{
id: 1,
name: 'fred',
title: 'boss',
wage: '300',
rate: 'day'
},{
id: 2,
name: 'jim',
title: 'nobody',
wage: '10',
rate: 'hour'
},{
id: 3,
name: 'bob',
title: 'dancer',
wage: '500',
rate: 'week'
}]
I would like to avoid using js frameworks (if possible), although ExtJs is already part of the project.
AT the moment I have a loop with an inner loop that if the keys match it copies the properties and breaks out of the inner loop to start the next outer loop.
Any better suggestions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
像这样?
如果数组具有相同的长度,并且 id 相等,则可以进行更简单的合并:
这是一个工作示例
[编辑 2016/07/30] 添加了一个使用更实用的方法的代码片段,并基于 @djangos 评论,添加了一种将两者结合起来的额外方法数组。
Like this?
If the arrays have the same length, and the id's are equal, a simpler merge will do:
Here's a working example
[Edit 2016/07/30] Added a snippet using more functional approach and, based on @djangos comment, an extra method to combine both arrays.
您可以使用 Alasql 库按 id 列合并两个数组:
试试这个示例 位于 jsFiddle。
You can merge two arrays by id column with Alasql library:
Try this example at jsFiddle.
试试这个...
try this...