我有一组数据,该数据已按对象的键进行分组-对于对象的每个键,我需要生成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]

#1楼 票数:1 已采纳

不必从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); 

#2楼 票数:1

 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}]}; function groupById(groups) { return Object.keys(groups).reduce((result, key) => { result[key] = result[key] || []; result[key] = groups[key].map(o => o.id); return result; }, {}); } console.log(groupById(result)) 

#3楼 票数:0

为了方便起见,请使用Array.prototype.reduce()而不是Array.prototype.forEach()Object.entries() ,这样您就不必对result[key]使用范围限定的引用。 您还可以使用对象分解以更简洁的方式引用keyvaluesid 不要忘记,您需要为reduce()回调将acc初始化为一个空对象:

 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}]} const output = Object.entries(result).reduce((acc, [key, values]) => Object.assign(acc, { [key]: values.map(({ id }) => id) }), {}) console.log(output) 

  ask by marcus petty translate from so

未解决问题?本站智能推荐:

3回复

如何基于三个键对数组对象进行分组

基于这个问题Group array items using object 我引用了这个答案,由https://stackoverflow.com/users/1094311/1983回答所以我从这个 jquery 获取数据然后我解析它,之后我将它推送到变量我从 myurl 得到的数据是这样的 这就是
3回复

如何基于键对数组进行分组,以及如何使用分组数组作为值创建动态对象?

我有多个items ,其中一些具有相同的title 。 我想创建一个多维数组, title为第一个键,唯一数字为第二个键。 因此,可以按title对items进行分类。 例: 我的示例正在使用此代码,但我认为这很复杂,我希望JavaScript还有另一种方法。 let ite
2回复

根据动态键对数组项进行分组

我有一个类似这样的数组:[ { KEY1: 190 }, { KEY1: 10 }, { KEY2: 50 }, { KEY2: 20 }, { KEY3: 155 }, { KEY3: 20511 }] 我想将其转换为: 这些键是动态的,可以出现n次。
4回复

使用键对数组中的对象进行分组,并形成新的数组对象

下面是我的数组对象 如何使用角色组合数组中的对象,并以下面的格式形成新的数组对象。 我已经研究了很多例子,但找不到解决方案。
2回复

根据键数组更改数据集对象的形状

假设我有:const KEYS = ['b', 'a', 'c']const obj = { 2018: {a: 1, b: 2, c: 3}, 2019: {a: 4, b: 5, c: 6}, 2020: {a: 7, b: 8, c: 9},} 这就是我想得到的:const result
4回复

如何使用相似的键对数据进行分组?

我有来自CSV的数据: 我需要将其作为JSON数组返回: 到目前为止,我所做的就是获得了所有独特的行业和团队。 然后,我遍历了所有数据并比较了Profession AND Group是否匹配。 如果存在匹配项,我创建了一个数组,在其中推送了状态和计数。 但是我真的不知道该怎么
4回复

对数组对象进行分组,以使具有相似键的对象不会放入同一组

我有以下名为'cars'的数组。我想对数据进行分组,以使具有相似键的对象不会放入group(array)中。 我如何对数据进行分组,以使具有相同品牌的数组对象不会放入同一组中。结果看起来像这样。
4回复

如何通过第一个元素对象键对数组中的数组进行分组

得到了这样的数组数组: 我需要获取此arr但arr分组数组的第一个元素具有相同的“键”值,因此它将如下所示: 我尝试使用reduce函数,但结果完全不同。 在此代码中,问题在于它将arr [1]与arr [2],arr [3]进行比较,然后再将arr [2]与arr [3]进行比较并