Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript创建一个对象,由数组值设置键_Javascript_Arrays_Object_Lodash - Fatal编程技术网

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}}
它将不起作用。谢谢提醒:-)