js实现一维数组转成无限层级的树形结构数据,树的层级由传入的一维数组决定
使用递归实现,直接上代码:
(() => {
let originArr = [
{id: 10, pid: 9},
{id: 10.1, pid: 9},
{id: 10.2, pid: 9},
{id: 10.3, pid: 9},
{id: 2, pid: 1},
{id: 2.5, pid: 1},
{id: '3-1.5', pid: 2.5},
{id: 9, pid: 8},
{id: 3, pid: 2},
{id: 4, pid: 3},
{id: 8, pid: 7},
{id: 7, pid: 6},
{id: 5, pid: 4},
{id: 3.5, pid: 2},
{id: 1},
{id: 2},
{id: 6, pid: 5}
]
let obj = []
// 1.递归实现
originArr.map( (item) => {
if (!item.pid) {
obj.push({
id: item.id,
children: []
})
}
})
function a (pObj, arr = originArr) {
if (Object.prototype.toString.call(pObj) != '[object Array]'
|| Object.prototype.toString.call(arr) != '[object Array]'
|| pObj.length < 1
|| arr.length < 1
) return
for (let t = 0; t < pObj.length; t++