美文网首页
js实现groupBy

js实现groupBy

作者: xuehairong | 来源:发表于2021-08-09 16:10 被阅读0次

    先贴代码

    function groupBy(list,key){
        return list.reduce((rv,current)=>{
            (rv[current[key]]=rv[current[key]]||[]).push(current)
            return rv
        },{})
    }
    

    举例

    let list=[ 
        { Phase: "Phase 1", Step: "Step 1", Task: "Task 1", Value: "5" },
        { Phase: "Phase 1", Step: "Step 1", Task: "Task 2", Value: "10" },
        { Phase: "Phase 1", Step: "Step 2", Task: "Task 1", Value: "15" },
        { Phase: "Phase 1", Step: "Step 2", Task: "Task 2", Value: "20" },
        { Phase: "Phase 2", Step: "Step 1", Task: "Task 1", Value: "25" },
        { Phase: "Phase 2", Step: "Step 1", Task: "Task 2", Value: "30" },
        { Phase: "Phase 2", Step: "Step 2", Task: "Task 1", Value: "35" },
        { Phase: "Phase 2", Step: "Step 2", Task: "Task 2", Value: "40" }
    ]
    groupBy(list,'Phase')
    

    返回结果

    {
        "Phase 1": [
            {
                "Phase": "Phase 1",
                "Step": "Step 1",
                "Task": "Task 1",
                "Value": "5"
            },
            {
                "Phase": "Phase 1",
                "Step": "Step 1",
                "Task": "Task 2",
                "Value": "10"
            },
            {
                "Phase": "Phase 1",
                "Step": "Step 2",
                "Task": "Task 1",
                "Value": "15"
            },
            {
                "Phase": "Phase 1",
                "Step": "Step 2",
                "Task": "Task 2",
                "Value": "20"
            }
        ],
        "Phase 2": [
            {
                "Phase": "Phase 2",
                "Step": "Step 1",
                "Task": "Task 1",
                "Value": "25"
            },
            {
                "Phase": "Phase 2",
                "Step": "Step 1",
                "Task": "Task 2",
                "Value": "30"
            },
            {
                "Phase": "Phase 2",
                "Step": "Step 2",
                "Task": "Task 1",
                "Value": "35"
            },
            {
                "Phase": "Phase 2",
                "Step": "Step 2",
                "Task": "Task 2",
                "Value": "40"
            }
        ]
    }
    

    相关文章

      网友评论

          本文标题:js实现groupBy

          本文链接:https://www.haomeiwen.com/subject/okxzvltx.html