js對象數組(JSON) 根據某個共同字段 分組

 

希望的是將下面的對象數組:

[
    {"id":"1","groupname":"值1","value":"11"},
    {"id":"2","groupname":"值1","value":"22"},
    {"id":"3","groupname":"值2","value":"33"},
    {"id":"4","groupname":"值2","value":"44"},
    {"id":"5","groupname":"值3","value":"55"},
    {"id":"6","groupname":"值3","value":"66"}
]

根據相同groupname字段分組,轉換成下面這種形式:

[
    {
        "groupname": "值1",
        "item": [
            {"id": "1", "groupname": "值1", "value": "11"},
            { "id": "2", "groupname": "值1", "value": "22"}
        ]
    },
    {
        "groupname": "值2",
        "item": [
            {"id": "3", "groupname": "值2", "value": "33"},
            { "id": "4", "groupname": "值2", "value": "44"}
        ]
    },
    {
        "groupname": "值3",
        "item": [
            {"id": "5", "groupname": "值3", "value": "55"},
            { "id": "6", "groupname": "值3", "value": "66"}
        ]
    }
]

做法:

var arr = [
    {"id":"1","groupname":"值1","value":"11"},
    {"id":"2","groupname":"值1","value":"22"},
    {"id":"3","groupname":"值2","value":"33"},
    {"id":"4","groupname":"值2","value":"44"},
    {"id":"5","groupname":"值3","value":"55"},
    {"id":"6","groupname":"值3","value":"66"}
];

var map = {},
    dest = [];
for(var i = 0; i < arr.length; i++){
    var ai = arr[i];
    if(!map[ai.groupname]){
        dest.push({
            groupname: ai.groupname,
            item: [ai]
        });
        map[ai.groupname] = ai;
    }else{
        for(var j = 0; j < dest.length; j++){
            var dj = dest[j];
            if(dj.groupname== ai.groupname){
                dj.item.push(ai);
                break;
            }
        }
    }
}

console.log(dest);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章