我正在尝试实现类似于 SQL 表连接的功能,
以最优雅(功能)的方式,最好使用 underscore.js,
所以请不要使用 for 循环。
我需要合并两个不同数组中的对象,并与一个公共标识符进行匹配。
例如,给定:
var basic = [{
id: '1',
name: 'someName',
},
{...} ]
var ext= [{
id: '1',
job: 'someJob',
},
{...} ]
结果应该是:
var combined = [{
id: '1',
name: 'someName',
job: 'someJob',
},
{...} ]
Thanks!
Map、findWhere 和extend 应该可以解决问题:
var combined = _.map(basic, function(base){
return _.extend(base, _.findWhere(ext, { id: base.id} ));
});
Edit:
如果性能是一个问题,请创建扩展值的散列:
var extHash = _.reduce(ext, function(memo, extended, key){
memo[extended.id] = extended;
return memo;
}, {});
并像这样使用:
var combined = _.map(basic, function(base){
return _.extend(base, extHash[base.id]);
});
Fiddle http://jsfiddle.net/GruffBunny/FhjQ5/
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)