javascript - 如何按键对元素进行分组并使用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"
}
]
解决方案
您可以使用Map
和reduce
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)
推荐阅读
- python - 只能使用 commonteamroster 端点提取 2020 团队名册
- typescript - 有没有更好的方法来告诉打字稿“数据”是哪种类型?
- plot - 如何使用 Python 绘制具有 300 *300 数据帧的凝聚聚类输出?
- c# - 如何将文件夹中的所有 PNG 转换为 JPG 以制作视频?
- r - 如何以与描述性统计(R)兼容的方式从嵌套列表中提取值
- kotlin - 如何使用 lambda 的返回来更新可组合的状态
- c# - C# 检测 SQL 数据库是否为 PaaS(Amazon RDS 或 Azure SQL)
- c++ - 如何处理函数声明上的模板?
- r - 如何使用 R 中的 ProjectTemplate 在 lib 子目录中自动加载 r 脚本?
- python - 如何解决错误:“在 python 中使用 pymer4 库时未安装 R 包“lme4”?