javascript - 按 JSON 键分组对象列表
问题描述
我正在尝试通过在 javascript 中对某个密钥对进行分组来重新格式化我的对象列表。
数据格式
[{
"sccode": "sccode1",
"val": "1ADA"
}, {
"sccode": "sccode2",
"val": "1ADB"
}, {
"sccode": "sccode1",
"val": "1ADC"
}]
预期结果
[{
"scCode": "sccode1",
"valCodes": ["1ADA", "1ADC"]
},
{
"scCode": "sccode2",
"valCodes": ["1ADB"]
}
]
我相信我可以循环遍历数组并匹配我的键,但是有没有一种快速的方法来重新格式化它而不必显式循环遍历?我尝试在下面使用 reduce 函数,但它给出了未定义的错误,我认为这与我的格式有关。
尝试过(?)代码
const resp = data.reduce((acc, ele) => {
const ant = acc.find(x => x.sccode === ele.sccode);
}, []);
解决方案
这行吗?
const src = [{"sccode":"sccode1","val":"1ADA"},{"sccode":"sccode2","val":"1ADB"},{"sccode":"sccode1","val":"1ADC"}],
result = src.reduce((r,{sccode,val}) => {
const match = r.find(({scCode}) => scCode == sccode)
match ?
match.valCodes.push(val) :
r.push({scCode:sccode, valCodes: [val]})
return r
}, [])
console.log(result)
.as-console-wrapper{min-height:100%;}
推荐阅读
- r - 如果第一个函数在 R 中失败,则路由到另一个函数
- php - 如果我们知道 php 中的键,如何获取值
- python - AppEngine Python 3.7标准环境上的Websockets?
- asp.net-core - ASP.Net Core 中是否有使用 XML 配置的单一开关?
- regex - 鉴于使用 RegEx 找到关键字,如何用两个引号突出显示整个引号?
- javascript - 如何在开始和结束时自定义 xAxis 标签?
- python - /post/ 处的 NoReverseMatch
- r - 每次在 R 中“重新出现”时,增加组的行号
- javascript - 在 TypeScript 中导入时出现“Uncaught SyntaxError: Unexpected token {”
- inheritance - 没有方法的子接口