对象操作的javascript,添加对象的值到对象
问题描述:
的阵列的例子将自己说话:对象操作的javascript,添加对象的值到对象
[{
userId: 'ab4e3870-287e-11e7-b5a1-abb6183e9866',
email: '[email protected]'
},{
userId: 'ae149220-2883-11e7-bbf9-1fb134f2b4ad',
email: '[email protected]'
}]
对象
{
'ab4e3870-287e-11e7-b5a1-abb6183e9866': { name: 'john', roles: 'detective'},
'ae149220-2883-11e7-bbf9-1fb134f2b4ad': { name: 'james', roles: 'plumber'},
}
结果我”:
对象的阵列d like would将是:
[{
userId: 'ab4e3870-287e-11e7-b5a1-abb6183e9866',
email: '[email protected]',
name: 'john',
roles: 'detective'
},{
userId: 'ae149220-2883-11e7-bbf9-1fb134f2b4ad',
email: '[email protected]',
name: 'james',
roles: 'plumber'
}]
因此,基本上,与对象中的userId匹配的键的值被添加到该数组中的该对象。
有没有一些简单的方法,我不明白这样做? ES6中没有外部库?
答
使用ES6传播算子
var data = [{
userId: 'ab4e3870-287e-11e7-b5a1-abb6183e9866',
email: '[email protected]'
},{
userId: 'ae149220-2883-11e7-bbf9-1fb134f2b4ad',
email: '[email protected]'
}]
var d = {
'ab4e3870-287e-11e7-b5a1-abb6183e9866': { name: 'john', roles: 'detective'},
'ae149220-2883-11e7-bbf9-1fb134f2b4ad': { name: 'james', roles: 'plumber'},
};
使用ES6传播算子...
data = data.map(function(item) {
return {...item, ...d[item.userId]}
});
ES5:通过添加属性中手动
data = data.map(function(item) {
item.name = d[item.userId].name;
item.roles = d[item.userId].roles;
return item;
});
当然,只是通过阵列和所述对象键进行迭代,并检查数组对象是否具有一个userId等于另一个对象的键 – Isaac