Javascript创建一个对象,由数组值设置键
我有一个方法需要从提供的Javascript创建一个对象,由数组值设置键,javascript,arrays,object,lodash,Javascript,Arrays,Object,Lodash,我有一个方法需要从提供的id参数返回用户对象。进一步的方法将使用此结构,因此它不是使用现有结构的简单情况 基本上,我有一个数据库,其中包含一个类型键,该键经过过滤,因此我有一个用户的集合。我需要做的是创建一个对象,该对象由用户\u id值设置关键帧,并包含省略了\u id和类型的用户对象 使用lodash或一些ES6糖,我想转换以下数组 [ { "_id": "0e12e661cb50068a135b36067f001d20", "name": "Joe Bloggs",
id
参数返回用户对象。进一步的方法将使用此结构,因此它不是使用现有结构的简单情况
基本上,我有一个数据库,其中包含一个类型
键,该键经过过滤,因此我有一个用户的集合
。我需要做的是创建一个对象,该对象由用户\u id
值设置关键帧,并包含省略了\u id
和类型的用户对象
使用lodash或一些ES6糖,我想转换以下数组
[
{
"_id": "0e12e661cb50068a135b36067f001d20",
"name": "Joe Bloggs",
"type": "user"
},
{
"_id": "0e12e661cb50068a135b36067f00373f",
"name": "Ben Bloggs",
"type": "user"
}
]
进入以下对象
,省略\u id
和类型
{
"0e12e661cb50068a135b36067f001d20": {
"name": "Joe Bloggs"
},
"0e12e661cb50068a135b36067f00373f": {
"name": "Ben Bloggs"
}
}
编辑我需要返回对象,而不是名称,因为可以向这些对象添加更多属性。只需使用reduce()
即可
var数据=[{
“_id”:“0e12e661cb50068a135b36067f001d20”,
“姓名”:“乔·布洛格斯”,
“类型”:“用户”
}, {
“_id”:“0e12e661cb50068a135b36067f00373f”,
“姓名”:“Ben Bloggs”,
“类型”:“用户”
}]
var结果=数据.reduce(函数(r,e){
r[e._id]={name:e.name};
返回r;
}, {})
console.log(result)
谢谢您的回答,请查看我对问题的编辑。我需要省略\u id
和type
属性的对象,而不仅仅是name属性。在某个阶段,用户对象可能添加了其他属性,这会破坏这一点。在这种情况下,你可以使用类似这样的东西,这真是太棒了,请把其中一个放上去,我很乐意接受。谢谢:-)我更新了我的答案,请注意,如果你想使用Object.assign
version,它只适用于对象的浅层副本,因此如果你有{key:{key:value}}
它将不起作用。谢谢提醒:-)