//原始数据let data = [ { id: 12304, name: "0", pid: 0 }, { id: 3579, name: "1", pid: 12304 }, { id: 3481, name: "1", pid: 12304 }, { id: 632, name: "2", pid: 3579 }, { id: 733, name: "0", pid: 0 }, { id: 5673, name: "5", pid: 733 }, { id: 5768, name: "6", pid: 5673 }, { id: 324, name: "6", pid: 5673 },];/*转化后数据转化依据:若一个item.pid = 另一个item.id,则这个item属于另一个item的childrenpid的意思就是parentId*/newData = [ { "id": 12304, "name": "0", "pid": 0, "children": [{ "id": 3579, "name": "1", "pid": 12304, "children": [{ "id": 632, "name": "2", "pid": 3579 }] }, { "id": 3481, "name": "1", "pid": 12304 }] }, { "id": 733, "name": "0", "pid": 0, "children": [{ "id": 5673, "name": "5", "pid": 733, "children": [{ "id": 5768, "name": "6", "pid": 5673 }, { "id": 324, "name": "6", "pid": 5673 }] }] }]//实现方法let arrayList = {};let newData = [];data.forEach((item) => { // id是唯一性的,pid是重复性的,所以根据id做arrayList arrayList[item.id] = item; let parent = arrayList[item.pid]; parent ? (parent.children || (parent.children = [])).push(item): newData.push(item)})console.log(newData)