首页 > 解决方案 > 通过对象的键对数据集进行分组并生成数组

问题描述

我有一组数据,我按对象的键分组 - 对于对象的每个键,我需要生成一个 id 的数组。因此,它不是一个对象数组,而是一个 id 的平面数组。

我已经设法取回数据,但似乎无法只取出 id。

这是数据集

let result =     {

  "age_group_ids": [
    {
      "id": 5
    },
    {
      "id": 4
    },
    {
      "id": 3
    },
    {
      "id": 9
    }
  ],
  "family_group_ids": [
    {
      "id": 2
    },
    {
      "id": 1
    }
  ],
  "earnings_group_ids": [
    {
      "id": 7
    },
    {
      "id": 6
    }
  ]
}

这是我写的函数,但它似乎不起作用。

 Object.keys(result).forEach(key => {
        return result[key].map(item =>  {
          item.id
        })
    })

最终结果我想要这样的对象

{"age_group_ids": [5,4, 3, 9],
"family_group_ids": [2, 1],
"earnings_group_ids": [7,6]

标签: javascriptarrays

解决方案


不是从 中返回,而是forEach将结果分配回result[key]。删除了地图周围的大括号item.id,因此值将添加到数组中。

const result = {"age_group_ids":[{"id":5},{"id":4},{"id":3},{"id":9}],"family_group_ids":[{"id":2},{"id":1}],"earnings_group_ids":[{"id":7},{"id":6}]};

Object.keys(result).forEach(key => {
  result[key] = result[key].map(item => item.id)
})

console.log(result);


推荐阅读