gpt4 book ai didi

javascript - 将 JSON "rows"与 "colums"合并到新对象中

转载 作者:行者123 更新时间:2023-11-28 18:21:02 26 4
gpt4 key购买 nike

我有一个看起来像这样的 JSON 对象数组

 [
{"PM":"Jane","e":"j@nunya.com","h":"15.00","w":"10/30/2016 12:00:00 AM","c":"John","p":"Happy Town USA"},
{"PM":"Jane","e":"j@nunya.com","h":"11.00","w":"11/06/2016 12:00:00 AM","c":"John","p":"Happy Town USA"},
{"PM":"Jill","e":"j@nunya.com","h":"21.00","w":"10/30/2016 12:00:00 AM","c":"John","p":"Sad Town USA"},
{"PM":"Jill","e":"j@nunya.com","h":"12.00","w":"11/06/2016 12:00:00 AM","c":"John","p":"Sad Town USA"}
]

查看给定 PM、e、p、c 组合的所有“列”数据,除了 w 和 h 字段外,数据相同。我需要将这些数据转换为一个看起来像这样的新对象。

[
{PM:"Jane",e:"j@nunya.com",c:"John",p:"Happy Town USA",
Details:[{"w":"10/30/2016","h":"15.00"},{"w":"11/06/2016","h":"11.00"}]},
{PM:"Jill",e:"j@nunya.com",c:"John",p:"Sad Town USA",
Details:[{"w":"10/30/2016","h":"21.00"},{"w":"11/06/2016","h":"12.00"}]}
]

这有点像在 SQL 查询中从行创建列,不幸的是我对源数据几乎没有控制权,所以这不是一个选项。

最佳答案

您想要使用 reduce 在 JavaScript 中完成这些类型的转换:

var arr = /* your array of objects goes here */;

var results = Object.values(arr.reduce(function(obj, row) {
var pm = row.PM;

// here we check to see if we already have an aggregator for that pm
if (!obj[pm]) {
obj[pm] = {
PM: pm,
e: row.e,
c: row.c,
p: row.p
Details: []
};
}

// now we need to add a record to the Details
obj[pm].Details.push({ w: row.w, h: row.h });

// common mistake using reduce is to forget
// to return the accumulator
return obj;
}, {}));

您可以使用 JSON.stringify 转换回 JSON 字符串。请注意,Object.values 尚未在每个 JavaScript 环境中实现,您可能需要对其进行填充。

关于javascript - 将 JSON "rows"与 "colums"合并到新对象中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39877775/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com