var data = [
{id: 1, age: 10},
{id: 1, age: 12},
{id: 2, age: 14},
{id: 2, age: 15},
{id: 3, age: 12},
{id: 3, age: 14}
]
var arr = [];
for(var i of data){
arr.push( i.id )
};
// new Set数组去重,得到对象{ 1, 2, 3 };
// Array.from将伪数组变成真正的数组, 得到[ 1, 2, 3 ]
arr = Array.from( new Set(arr) );
var newArr = [];
for(var k of arr){
var obj = {};
obj.id = k;
obj.children = [];
newArr.push(obj);
}
console.log(newArr) // [ {id: 1,children:[]}, {id: 2,children:[]}, {id:3,children:[]} ]
for(var i of newArr){
for(var k of data){
if(i.id == k.id){
i.children.push(k);
}
}
}
console.log(newArr) // 到这步得到 tree嵌套类型
// [
// { id: 1, children:[ {id: 1, age: 10}, {id: 1, age: 12} ] },
// { id: 2, children:[ {id: 2, age: 10}, {id: 2, age: 12} ] },
// { id: 3, children:[ {id: 3, age: 10}, {id: 3, age: 12} ] },
// ]
var ccc = []; // 接下来得到二维数组↓
for(var i of arr){
ccc.push(i.children);
}
console.log(ccc);
// [
// [ {id: 1, age: 10}, {id: 1, age: 12} ],
// [ {id: 2, age: 10}, {id: 2, age: 12} ],
// [ {id: 3, age: 10}, {id: 3, age: 12} ],
// ]
网友评论