1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| const jsonArr = [ { name: 'a', id: 1, pid: 0 }, { name: 'b', id: 2, pid: 1 }, { name: 'c', id: 3, pid: 1 }, { name: 'd', id: 4, pid: 2 }, { name: 'e', id: 5, pid: 2 } ]
function fn(data, pid) { let result = [] let temp for (let i = 0; i < data.length; i++) { if (data[i].pid == pid) { let obj = { name: data[i].name, id: data[i].id } temp = fn(data, data[i].id) if (temp.length > 0) { obj.children = temp } result.push(obj) } } return result }
const result = fn(jsonArr, 0)
|