let list = [
{"Id":1,"parentId":null,"Sort":0,"Name":"菜单1"},
{"Id":2,"parentId":1,"Sort":0,"Name":"菜单1-1"},
{"Id":3,"parentId":1,"Sort":0,"Name":"菜单1-2"},
{"Id":4,"parentId":2,"Sort":2,"Name":"菜单1-1-2"},
{"Id":5,"parentId":2,"Sort":1,"Name":"菜单1-1-1"},
{"Id":6,"parentId":null,"Sort":0,"Name":"菜单2"},
{"Id":7,"parentId":6,"Sort":0,"Name":"菜单2-1"},
{"Id":8,"parentId":6,"Sort":0,"Name":"菜单2-2"},
{"Id":9,"parentId":8,"Sort":2,"Name":"菜单2-2-2"},
{"Id":10,"parentId":8,"Sort":1,"Name":"菜单2-2-1"},
{"Id":11,"parentId":10,"Sort":0,"Name":"菜单2-2-1-1"},
{"Id":12,"parentId":10,"Sort":0,"Name":"菜单2-2-1-2"},
{"Id":13,"parentId":null,"Sort":0,"Name":"菜单3"},
{"Id":14,"parentId":13,"Sort":0,"Name":"菜单3-1"},
{"Id":15,"parentId":13,"Sort":0,"Name":"菜单3-2"},
{"Id":16,"parentId":15,"Sort":2,"Name":"菜单3-2-2"},
{"Id":17,"parentId":15,"Sort":1,"Name":"菜单3-2-1"},
{"Id":18,"parentId":17,"Sort":0,"Name":"菜单3-2-1-1"},
{"Id":19,"parentId":17,"Sort":0,"Name":"菜单3-2-1-2"}
]
function tranListToTreeData(list, rootValue) {
const arr = []
list.forEach(item => {
if (item.parentId === rootValue) {
const children = tranListToTreeData(list, item.Id)
if (children.length > 0) {
item.children = children
}
arr.push(item)
}
})
return arr
}
console.log(tranListToTreeData(list, null))