希望的是將下面的對象數組:
[
? ? {"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 < data.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);