我试图将两个对象数组合并在一起。
我已经预置了对象数组,以便它们匹配,我只需要在两个数组中的每个对象之间推送属性。
我认为比双for循环更干净的解决方案,还是我应该只做一个普通的JS解决方案?
两个数组的示例:
[
{
provider: 'foo',
title: 'Title1'
},
{
provider: 'bar',
title: 'Title2'
}
]
[
{
all: '0',
novelty: '24'
},
{
all: '4',
novelty: '12'
}
]它应返回:
[
{
provider: 'foo',
title: 'Title1',
all: '0',
novelty: '24'
},
{
provider: 'bar',
title: 'Title2',
all: '4',
novelty: '12'
}
]发布于 2016-10-29 20:00:51
如果没有提交,您可以使用Array.prototype.map()和Object.assign() (如果目标浏览器不支持赋值,则使用angular.merge() ):
var arr1 = [{
provider: 'foo',
title: 'Title1'
}, {
provider: 'bar',
title: 'Title2'
}];
var arr2 = [{
all: '0',
novelty: '24'
}, {
all: '4',
novelty: '12'
}];
var result = arr1.map(function(item, index) {
return Object.assign({}, item, arr2[index]);
});
console.log(result);
如果您想使用寄宿,请使用_.zipWith()和_.assign()
var arr1 = [{
provider: 'foo',
title: 'Title1'
}, {
provider: 'bar',
title: 'Title2'
}];
var arr2 = [{
all: '0',
novelty: '24'
}, {
all: '4',
novelty: '12'
}];
var result = _.zipWith(arr1, arr2, function(a, b) {
return _.assign({}, a, b);
});
console.log(result);<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.16.4/lodash.min.js"></script>
发布于 2016-10-29 20:03:46
您可以使用ES6来完成这一任务:
data1.map( (obj, i) => Object.assign({}, obj, data2[i]) )
var data1 = [{
provider: 'foo',
title: 'Title1'
}, {
provider: 'bar',
title: 'Title2'
}];
var data2 = [{
all: '0',
novelty: '24'
}, {
all: '4',
novelty: '12'
}];
var merged = data1.map( (obj, i) => Object.assign({}, obj, data2[i]) );
console.log(merged);
https://stackoverflow.com/questions/40323110
复制相似问题