// 原数组const list =[{name:'A',id:1,desc:'test'},{name:'B',id:2,desc:'test'},{name:'C',id:3,desc:'test'},{name:'D',id:4,desc:'test'},{name:'A',id:5,desc:'test'},{name:'C',id:6,desc:'test'},{name:'B',id:7,desc:'test'},{name:'B',id:8,desc:'test'},{name:'A',id:9,desc:'test'},{name:'D',id:10,desc:'test'},]// 重组之后的数组[{"name":"A","id":1,"desc":"test","children":[{"name":"A","id":1,"desc":"test"},{"name":"A","id":5,"desc":"test"},{"name":"A","id":9,"desc":"test"}]},{"name":"B","id":2,"desc":"test","children":[{"name":"B","id":2,"desc":"test"},{"name":"B","id":7,"desc":"test"},{"name":"B","id":8,"desc":"test"}]},{"name":"C","id":3,"desc":"test","children":[{"name":"C","id":3,"desc":"test"},{"name":"C","id":6,"desc":"test"}]},{"name":"D","id":4,"desc":"test","children":[{"name":"D","id":4,"desc":"test"},{"name":"D","id":10,"desc":"test"}]}]
2、代码实现
const list =[{name:'A',id:1,desc:'test'},{name:'B',id:2,desc:'test'},{name:'C',id:3,desc:'test'},{name:'D',id:4,desc:'test'},{name:'A',id:5,desc:'test'},{name:'C',id:6,desc:'test'},{name:'B',id:7,desc:'test'},{name:'B',id:8,desc:'test'},{name:'A',id:9,desc:'test'},{name:'D',id:10,desc:'test'},]let newList =[]
list.forEach(item=>{let status = newList.find(el=> el.name === item.name)// 判断第一层级,用name属性来判断if(status){
status.children.push({...item})// 将数据插入到第二层级中}else{let obj ={...item,children:[{...item}]}
newList.push(obj)}})
console.log('newList', newList);