javascript - 根据id转换json数组
问题描述
我想根据我拥有的数组的 sID 和 pID 属性将数组转换为另一个数组:
data = [{
{
"sID": 10,
"pID": 5,
"Sum": 9300,
"class": "one",
},{
"sID": 10,
"pID": 5,
"Sum": 2200,
"class": "two",
},{
"sID": 10,
"pID":6 ,
"Sum": 4600,
"class": "one",
},{
"sID": 10,
"pID": 6,
"Sum": 5300,
"class": "two"
}]
我想创建以下格式的数据
[{"sID":10,"pID":5,"one":9300,"two":2200},
{"sID":10,"pID":6,"one":4600,"two":5300}]
有没有办法做到这一点?
解决方案
您可以为同一组键获取一个哈希表,并将值的总和分配给结果。
var data = [{ sID: 10, pID: 5, Sum: 9300, class: "one" }, { sID: 10, pID: 5, Sum: 2200, class: "two" }, { sID: 10, pID: 6, Sum: 4600, class: "one" }, { sID: 10, pID: 6, Sum: 5300, class: "two" }],
keys = ['sID', 'pID'],
result = Object.values(data.reduce((h, o) => {
var key = keys.map(k => o[k]).join('|');
if (!h[key]) {
h[key] = Object.assign(...keys.map(k => ({ [k]: o[k] })));
}
h[key][o.class] = (h[key][o.class] || 0) + o.Sum;
return h;
}, Object.create(null)));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
推荐阅读
- python - Scrapy:如何从 Scrapy.Request 中获取返回值?
- sql - 如何在 h2 中为某些 id 禁用表上的删除?
- algorithm - 时间复杂度 - For 循环
- apache-kafka - 在 spring kafka 中获取 UNKOWN_PRODUCER_ID 异常
- macos - 程序集读取用户输入不等待
- javascript - 从 Nuxt.js 中的商店加载页面标题
- javascript - YouTube 视频需要刷新网页才能自动播放 - 如何解决?
- php - 需要将 $_POST['link'] 添加到任何上传的文件名中
- bash - 文件从一台远程服务器传输到另一台远程服务器而不下载文件
- go - 如何查询给定存储库中的提交(库:shurcooL / githubv4)