const arrs = [
{name: 'a', val: 1, parent: 0},
{name: 'a1', val: 2, parent: 1},
{name: 'a2', val: 3, parent: 1},
{name: 'a3', val: 4, parent: 2},
{name: 'a4', val: 5, parent: 2},
{name: 'a5', val: 6, parent: 3},
{name: 'a6', val: 7, parent: 3},
{name: 'a7', val: 8, parent: 4},
{name: 'a8', val: 9, parent: 7},
{name: 'a9', val: 10, parent: 9},
]
function parseArrayToObj(arr) {
const obj = {}
let rootVal = null
arr.forEach(item => {
obj[item.val] = item
if(item.parent === 0) {
rootVal = item.val
}
})
arr.forEach(item => {
if(item.parent) {
obj[item.parent].children ? obj[item.parent].children.push(item) : obj[item.parent].children = [item]
}
})
return obj[rootVal]
}
parseArrayToObj(arrs)