const data = [ {id: 1, parentId: 0}, {id: 2, parentId: 1}, {id: 3, parentId: 2}, {id: 4, parentId: 3}, {id: 5, parentId: 0}, {id: 6, parentId: 5}, {id: 7, parentId: 6}, {id: 8, parentId: 7}, ];
function sortData(data) { let map = {}; let roots = [];
data.forEach(item => { map[item.id] = item; if(item.parentId === 0) { roots.push(item); } });
data.forEach(item => { let parent = map[item.parentId]; if(parent) { if(!parent.children) { parent.children = []; } parent.children.push(item); } });
return roots; }
console.log(sortData(data));
$data = [ ['id' => 1, 'parentId' => 0], ['id' => 2, 'parentId' => 1], ['id' => 3, 'parentId' => 2], ['id' => 4, 'parentId' => 3], ['id' => 5, 'parentId' => 0], ['id' => 6, 'parentId' => 5], ['id' => 7, 'parentId' => 6], ['id' => 8, 'parentId' => 7], ];
function sortData($data) { $map = []; $roots = [];
foreach($data as $item) { $map[$item['id']] = $item; if($item['parentId'] === 0) { $roots[] = $item; } }
foreach($data as $item) { $parent = $map[$item['parentId']]; if($parent) { if(!isset($parent['children'])) { $parent['children'] = []; } $parent['children'][] = $item; } }
return $roots; }
print_r(sortData($data));
下一篇:按父级ID列出产品