function getTreeS() {
const time = new Date().getTime()
treeS(treeData)
const timeEnd = new Date().getTime()
console.log((timeEnd - time) + 'ms')
console.log(tree(treeData))
}
代码-
const treeData = [
{ id: 1, pid: 0, path: '/1'},
{ id: 2, pid: 1, path: '/2'},
{ id: 3, pid: 1, path: '/3'},
{ id: 4, pid: 1, path: '/4'},
{ id: 5, pid: 0, path: '/5'},
{ id: 6, pid: 5, path: '/6'},
{ id: 7, pid: 5, path: '/7'},
{ id: 8, pid: 6, path: '/8'},
{ id: 9, pid: 6, path: '/9'},
{ id: 10, pid: 7, path: '/10'},
{ id: 11, pid: 7, path: '/11'},
{ id: 12, pid: 8, path: '/12'},
{ id: 13, pid: 12, path: '/13'},
{ id: 14, pid: 13, path: '/14'},
{ id: 15, pid: 14, path: '/15'},
{ id: 16, pid: 0, path: '/16'},
{ id: 17, pid: 16, path: '/17'},
{ id: 18, pid: 16, path: '/18'},
{ id: 19, pid: 16, path: '/19'},
{ id: 20, pid: 16, path: '/20'}
]
代码二
function treeS(data, pid = 0){
const newData = data.filter(function (item) {
return item.pid === pid
})
data = data.filter(function (item) {
return item.pid !== pid
})
for (let i = 0; i < newData.length; i++) {
const rtData = treeS(data, newData[i].id)
if (rtData && rtData.length > 0) {
console.log(rtData)
newData[i].children = rtData
}
}
return newData
}
代码三
一。树形数据整合。
代码一::为时间测试代码。
代码二:为测试数据。
代码三: 为整合树形数据的方法。
性能:120条数据大约需要300ms-400ms左右。(如果有更好的方法,欢迎留言!)
二。主要使用技术。
1。使用递归调用。
2。使用 filter 方法用于过滤数组。