Javascript json数据分组
如果以前有人问过这个问题,我很抱歉,但是我找不到一个很好的例子来说明我正在努力实现的目标。也许我只是没有在寻找正确的东西。如果有什么解释,请纠正我。无论如何 我有这样的JSON数据结构Javascript json数据分组,javascript,jquery,grouping,distinct,Javascript,Jquery,Grouping,Distinct,如果以前有人问过这个问题,我很抱歉,但是我找不到一个很好的例子来说明我正在努力实现的目标。也许我只是没有在寻找正确的东西。如果有什么解释,请纠正我。无论如何 我有这样的JSON数据结构 {"Result":[ {"Level":"ML","TeamName":"Team 1","League":"League 1"}, {"Level":"ML","TeamName":"Team 2","League":"League 2"}, {"Level":"ML","TeamNa
{"Result":[
{"Level":"ML","TeamName":"Team 1","League":"League 1"},
{"Level":"ML","TeamName":"Team 2","League":"League 2"},
{"Level":"ML","TeamName":"Team 3","League":"League 3"},
{"Level":"3A","TeamName":"Team 4","League":"League 1"},
{"Level":"3A","TeamName":"Team 5","League":"League 2"},
{"Level":"3A","TeamName":"Team 6","League":"League 3"},
{"Level":"2A","TeamName":"Team 7","League":"League 1"},
{"Level":"2A","TeamName":"Team 8","League":"League 2"},
{"Level":"2A","TeamName":"Team 9","League":"League 3"},
]}
{"Result":[
{"ML":[
{"TeamName":"Team 1","League":"League 1"},
{"TeamName":"Team 2","League":"League 2"},
{"TeamName":"Team 3","League":"League 3"}
]},
{"3A":[
{"TeamName":"Team 4","League":"League 1"},
{"TeamName":"Team 5","League":"League 2"},
{"TeamName":"Team 6","League":"League 3"}
]},
{"2A":[
{"TeamName":"Team 7","League":"League 1"},
{"TeamName":"Team 8","League":"League 2"},
{"TeamName":"Team 9","League":"League 3"}
]}
]}
我想分组,或者像这样重组它
{"Result":[
{"Level":"ML","TeamName":"Team 1","League":"League 1"},
{"Level":"ML","TeamName":"Team 2","League":"League 2"},
{"Level":"ML","TeamName":"Team 3","League":"League 3"},
{"Level":"3A","TeamName":"Team 4","League":"League 1"},
{"Level":"3A","TeamName":"Team 5","League":"League 2"},
{"Level":"3A","TeamName":"Team 6","League":"League 3"},
{"Level":"2A","TeamName":"Team 7","League":"League 1"},
{"Level":"2A","TeamName":"Team 8","League":"League 2"},
{"Level":"2A","TeamName":"Team 9","League":"League 3"},
]}
{"Result":[
{"ML":[
{"TeamName":"Team 1","League":"League 1"},
{"TeamName":"Team 2","League":"League 2"},
{"TeamName":"Team 3","League":"League 3"}
]},
{"3A":[
{"TeamName":"Team 4","League":"League 1"},
{"TeamName":"Team 5","League":"League 2"},
{"TeamName":"Team 6","League":"League 3"}
]},
{"2A":[
{"TeamName":"Team 7","League":"League 1"},
{"TeamName":"Team 8","League":"League 2"},
{"TeamName":"Team 9","League":"League 3"}
]}
]}
如何使用Javascript/jQuery实现这一点?很遗憾,我无法编辑服务器发送给我的内容。只需在对象中跟踪所有内容:
let groups = Object.create(null);
data.forEach(item => {
if (!groups[item.Level]) {
groups[item.Level] = [];
}
groups[item.Level].push({
TeamName: item.TeamName,
League: item.League
});
});
let result =
Object.entries(groups)
.map(([k, v]) => ({[k]: v}));
这是一个小问题……将JSON转换为一个对象,将相关部分复制到另一个对象,然后将第二个对象转换为JSON。你可以做到。@JonathanM最后一步可能根本就没有必要,因为假设他们在某个时候真的想对这个对象做点什么。老实说,我还没怎么试过。我在想该怎么做。我不知道是否必须为此使用循环和$.grep()的组合。任何指导或帮助都很好。您的for循环(和下一行)是否可以简化为
for(数据中的项)
?@TimothyAaron:不,JavaScript的for in
循环迭代键,而不是值,您不应该使用它来迭代数组。因此,我们仍在等待的广泛采用,因为每个:DHe说他正在使用jQuery,所以您可以使用$。each。@Julian:好的,谢谢;我要补充一点。那太好了……非常感谢你的一些想法。