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);
函数封装
//arr为传入函数的目标数组,根据传入的key重组数组
function filterData(key,arr){
let map = {},
dest = [];
for(var i = 0; i < arr.length; i++){
var ai = arr[i];
if(!map[ai[key]]){
dest.push({
[key]: ai[key],
data: [ai]
});
map[ai[key]] = ai;
}else{
for(var j = 0; j < dest.length; j++){
var dj = dest[j];
if(dj[key] == ai[key]){
dj.data.push(ai);
break;
}
}
}
}
console.log(dest);
}