Javascript json数据分组

ksu*_*ine 18 javascript jquery grouping distinct

对不起,如果以前曾经问过,但我找不到一个很好的例子,说明我想要完成的事情.也许我只是不寻找正确的事情.如果在某处有解释,请纠正我.无论如何...

我有像这样结构的JSON数据......

{"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"},
]}
Run Code Online (Sandbox Code Playgroud)

我想分组,或者像这样重组...

{"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"}
    ]}
]}
Run Code Online (Sandbox Code Playgroud)

我将如何使用Javascript/jQuery实现这一目标?不幸的是我无法编辑服务器发送给我的内容.

Ry-*_*Ry- 26

只需跟踪对象中的所有内容:

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}));
Run Code Online (Sandbox Code Playgroud)

  • @TimothyAaron:不,JavaScript的`for in`循环遍历键而不是值,你不应该用它来迭代数组.所以,我们仍在等待广泛采用`for each`:D (2认同)