js 对json分组

来源:互联网 发布:linux svn服务端 编辑:程序博客网 时间:2024/06/07 06:43

希望的是将下面的对象数组:

[    {"id":"1001","name":"值1","value":"111"},    {"id":"1001","name":"值1","value":"11111"},    {"id":"1002","name":"值2","value":"25462"},    {"id":"1002","name":"值2","value":"23131"},    {"id":"1002","name":"值2","value":"2315432"},    {"id":"1003","name":"值3","value":"333333"}]

根据相同id字段分组,转换成下面这种形式:

[    {        "id": "1001",        "name": "值1",        "data": [            {"id": "1001", "name": "值1", "value": "111"},            { "id": "1001", "name": "值1", "value": "11111"}        ]    },    {        "id": "1002",        "name": "值2",        "data": [            { "id": "1002",  "name": "值2", "value": "25462" },            { "id": "1002", "name": "值2", "value": "23131"},            {"id": "1002", "name": "值2","value": "2315432" }        ]    },    {        "id": "1003",        "name": "值3",        "data": [            {"id": "1003", "name": "值3", "value": "333333" }        ]    }]

做法:

var arr = [    {"id":"1001","name":"值1","value":"111"},    {"id":"1001","name":"值1","value":"11111"},    {"id":"1002","name":"值2","value":"25462"},    {"id":"1002","name":"值2","value":"23131"},    {"id":"1002","name":"值2","value":"2315432"},    {"id":"1003","name":"值3","value":"333333"}];var map = {},    dest = [];for(var i = 0; i < arr.length; i++){    var ai = arr[i];    if(!map[ai.id]){        dest.push({            id: ai.id,            name: ai.name,            data: [ai]        });        map[ai.id] = ai;    }else{        for(var j = 0; j < dest.length; j++){            var dj = dest[j];            if(dj.id == ai.id){                dj.data.push(ai);                break;            }        }    }}

console.log(dest);

原创粉丝点击