我有两个数组,我想将它们合并为一个对象。我举了一些例子,说明了我拥有的和想要实现的目标。我尝试了_.union
和其他一些下划线方法。
var original = [
{
Country: 'US',
value: '10'
},
{
Country: 'Turkey',
value: '5'
}
];
var newlist =["Afghanistan", "Antarctica","Turkey"]
我想要的结果:
var results= [
{
Country: 'Afghanistan',
value: '0'
},
{
Country: 'Antarctica',
value: '0'
},
{
Country: 'Turkey',
value: '5'
}
];
美国不会出现在最终结果中,因为新名单没有美国。因此,基本上新列表中的所有值都将显示在结果中,并带有原始列表中的值。
答案 0 :(得分:5)
一个非Underscore解决方案,.map()
是新数组,如果它可以.find()
,则返回原始数组中的对象,否则返回一个新对象:
var original = [
{ Country: 'US', value: '10' },
{ Country: 'Turkey', value: '5' }
];
var newlist =["Afghanistan", "Antarctica","Turkey"]
var result = newlist.map(function(v) {
return original.find(function(o) { return o.Country === v })
|| { Country: v, value: '0' }
})
console.log(result)
这是一个带有ES6箭头功能的单行程序:
var original = [
{ Country: 'US', value: '10' },
{ Country: 'Turkey', value: '5' }
];
var newlist =["Afghanistan", "Antarctica","Turkey"]
var result = newlist.map(v => original.find(o => o.Country===v) || {Country:v, value:'0'})
console.log(result)