美文网首页
一维数组转二维数组/一位数组转tree嵌套childern

一维数组转二维数组/一位数组转tree嵌套childern

作者: Peter_2B | 来源:发表于2020-12-24 14:09 被阅读0次
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}  ], 
//  ]

相关文章

网友评论

      本文标题:一维数组转二维数组/一位数组转tree嵌套childern

      本文链接:https://www.haomeiwen.com/subject/bnrmnktx.html