猿问

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

在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"

        }

      ]

    }

  }

]


qq_遁去的一_1
浏览 136回答 1
1回答

一只斗牛犬

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包含所需的输出。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答