首页 > 解决方案 > 如何按键对元素进行分组并使用javascript附加该特定键的值?

问题描述

我需要按键对元素进行分组,并使用 JavaScript 附加该特定键的值。以下是实际数据和预期数据。谁能帮我解决它?

实际的

[
    {
        "num": 152332,
        "subReport": "HS_ONE"
    },
    {
        "num": 152332,
        "subReport": "HS_TWO"
    },
    {
        "num": 152331,
        "subReport": "HS_THREE"
    },
    {
        "num": 152331,
        "subReport": "HS_FOUR"
    }
]

预期的

[
    {
        "num": 152332,
        "subReport": "HS_ONE,HS_TWO"
    },    
    {
        "num": 152331,
        "subReport": "HS_THREE,HS_FOUR"
    }
]

标签: javascriptarraysjson

解决方案


您可以使用Mapreduce

let data = [{"num": 152332,"subReport": "HS_BIT"},{"num": 152332,"subReport": "HS_LOG"},{"num": 152331,"subReport": "HS_LOG"},{"num": 152331,"subReport": "HS_GENERAL"}]

let final = data.reduce((op,{num,subReport})=>{
  op.set(num, op.get(num) && (op.get(num) + ',' + subReport) ||  subReport)
  return op
},new Map())

let output = [...final].map(([num,subReport])=>({num,subReport}))

console.log(output)


推荐阅读