转载: https://www.cnblogs.com/rysinal/p/5834446.html
希望的是将下面的对象数组:
- [
- {"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);
来源: http://www.bubuko.com/infodetail-3015946.html