为了账号安全,请及时绑定邮箱和手机立即绑定

JSON / JavaScript - 查找匹配的值,将它们转换为键并创建新的合并对象

JSON / JavaScript - 查找匹配的值,将它们转换为键并创建新的合并对象

qq_遁去的一_1 2022-09-02 16:21:49
在vanilla JavaScript中,我如何从这个对象中找到唯一的位置并使它们成为键,并将具有该位置的所有项目作为值放置。(如有必要,可以安装 lodash)。所以这个:[  {    "item": {      "id": "cat"    },    "location": {      "id": "porch"    }  },  {    "item": {      "id": "dog"    },    "location": {      "id": "porch"    }  },  {    "item": {      "id": "snake"    },    "location": {      "id": "forest"    }  },  {    "item": {      "id": "bird"    },    "location": {      "id": "forest"    }  },  {    "item": {      "id": "beer"    },    "location": {      "id": "fridge"    }  }]变成这样:[  {    "porch": [      {        "id": "cat"      },      {        "id": "dog"      }    ]  },  {    "forest": [      {        "id": "snake"      },      {        "id": "bird"      }    ]  },  {    "fridge": [      {        "id": "beer"      }    ]  }]笔修改所需的结果[  {    "location": {      "name": "porch",      "items": [        {          "title": "cat"        },        {          "title": "dog"        }      ]    }  },  {    "location": {      "name": "forest",      "items": [        {          "title": "snake"        },        {          "title": "bird"        }      ]    }  },  {    "location": {      "name": "fridge",      "items": [        {          "title": "beer"        }      ]    }  }]
查看完整描述

1 回答

?
一只斗牛犬

TA贡献1784条经验 获得超2个赞

let obj = [

  {

    "item": {

      "id": "cat"

    },

    "location": {

      "id": "porch"

    }

  },

  {

    "item": {

      "id": "dog"

    },

    "location": {

      "id": "porch"

    }

  },

  {

    "item": {

      "id": "snake"

    },

    "location": {

      "id": "forest"

    }

  },

  {

    "item": {

      "id": "bird"

    },

    "location": {

      "id": "forest"

    }

  },

  {

    "item": {

      "id": "beer"

    },

    "location": {

      "id": "fridge"

    }

  }

]


let result = {};


obj.forEach(({item, location}) => {

   if(!result[location.id]) result[location.id] = []

    result[location.id].push({title: item.id})

})

result = Object.keys(result).map(key => ({

    "location": {

      "name": key,

      "items": result[key]

    }

  }))

result包含所需的输出。


查看完整回答
反对 回复 2022-09-02
  • 1 回答
  • 0 关注
  • 83 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信