function translateDataToTree(data,id,parentId,level,edit) {
let list = data.map(data => data[id])
let parents = data.filter(value => {
if(value[parentId] == 'undefined' || value[parentId] == null || !list.includes(value[parentId])){
value[level]=0
value[edit]=false
return value
}
})
let children = data.filter(value => {
if(value[parentId] !== 'undefined' && value[parentId] != null && list.includes(value[parentId])){
value[level]=0
value[edit]=false
return value
}
})
let translator = (parents, children) => {
parents.forEach((parent) => {
children.forEach((current, index) => {
if (current[parentId] === parent[id]) {
current[level]=parent[level]+1
let temp = JSON.parse(JSON.stringify(children))
temp.splice(index, 1)
translator([current], temp)
typeof parent.children !== 'undefined' ? parent.children.push(current) : parent.children = [current]
}
})
})
}
translator(parents, children)
return parents
}
let s=[{
id8: 1,
name: '1',
parentId11: 111
}, {
id8: 2,
name: '1-1',
parentId11: 1
}, {
id8: 3,
name: '1-1-1',
parentId11: 2
}, {
id8: 4,
name: '1-2',
parentId11: 1
}, {
id8: 5,
name: '1-2-2',
parentId11: 4
}, {
id8: 6,
name: '1-1-1-1',
parentId11: 3
}, {
id8: 7,
name: '2',
parentId11: 112
},{
id8: 8,
name: '测试',
parentId11: 5
}]
let s1=translateDataToTree(s,"id8","parentId11","treeLevel","editF")
console.log("结果")
console.log(s1)
js根据id、parentId生成树形结构
最新推荐文章于 2023-06-15 09:53:14 发布