Javascript 多个嵌套级别数组的下划线

Javascript 多个嵌套级别数组的下划线,javascript,arrays,json,object,underscore.js,Javascript,Arrays,Json,Object,Underscore.js,我有一个对象数组,我想把它转换成一个键值对的映射,以id作为键。但是,我希望在根级别和recipes属性中都这样做 阵列resp: [ { "id": "1", "recipes": [ { "id": 4036 }, { "id": 4041 } ] }, { "id": "2", "recipes": [ { "id": 4052

我有一个对象数组,我想把它转换成一个键值对的映射,以
id
作为键。但是,我希望在根级别和
recipes
属性中都这样做

阵列
resp

[
  {
    "id": "1",
    "recipes": [
      {
        "id": 4036
      },
      {
        "id": 4041
      }
    ]
  },
  {
    "id": "2",
    "recipes": [
      {
        "id": 4052
      },
      {
        "id": 4053
      }
    ]
  }
]
期望的结果

{
  "1": {
    "id": "1",
    "recipes": {
      "4036": {
        "id": 4036
      },
      "4041": {
        "id": 4041
      }
    }
  },
  "2": {
    "id": "2",
    "recipes": {
      "4052": {
        "id": 4052
      },
      "4053": {
        "id": 4053
      }
    }
  }
}

我知道如何通过以下功能使用lodash执行此操作:

使用下划线.js

然而,对于这个项目,我正在寻找一个优雅的解决方案,使用下划线来做同样的事情——让数组中嵌套的所有对象都使用
id
作为键。有人知道怎么做吗

谢谢


编辑:添加了所需的输出格式

我将使用
数组。在响应和嵌套
数组上减少
。在配方上减少
,以产生所需的结果。以下是一个es6示例:

resp.reduce((p, c) => {
  p[c.id] = {
    id: c.id,
    recipes: c.recipes.reduce((r, cr) => {
       r[cr.id] = { id: cr.id }
       return r;
    }, {})
  }
  return p;
}, {});
更详细的非es6版本:

var resp=[
{
“id”:“1”,
“食谱”:[
{
“id”:4036
},
{
“id”:4041
}
]
},
{
“id”:“2”,
“食谱”:[
{
“id”:4052
},
{
“id”:4053
}
]
}
]    
var格式化=相应减少(函数(数据,电流){
数据[当前id]={
id:cur.id,
配方:cur.recipes.reduce(函数(recips,curRecip){
recips[curRecip.id]={id:curRecip.id}
回执;
}, {})
}
返回数据;
}, {});

console.log(格式化)
我会在响应上使用
Array.reduce
,在配方上使用嵌套的
Array.reduce
,以产生所需的结果。以下是一个es6示例:

resp.reduce((p, c) => {
  p[c.id] = {
    id: c.id,
    recipes: c.recipes.reduce((r, cr) => {
       r[cr.id] = { id: cr.id }
       return r;
    }, {})
  }
  return p;
}, {});
更详细的非es6版本:

var resp=[
{
“id”:“1”,
“食谱”:[
{
“id”:4036
},
{
“id”:4041
}
]
},
{
“id”:“2”,
“食谱”:[
{
“id”:4052
},
{
“id”:4053
}
]
}
]    
var格式化=相应减少(函数(数据,电流){
数据[当前id]={
id:cur.id,
配方:cur.recipes.reduce(函数(recips,curRecip){
recips[curRecip.id]={id:curRecip.id}
回执;
}, {})
}
返回数据;
}, {});

console.log(格式化)你能显示预期结果的结构吗?@hackerrdave我已经在上面添加了预期结果。你能显示预期结果的结构吗?@hackerrdave我已经在上面添加了预期结果