首页 > 编程知识 正文

数组转树形结构,js集合转数组

时间:2023-05-05 16:07:36 阅读:223977 作者:255

JS–数组转树状数组排列

2020年9月10日

代码

function getArrayTree(arrList, id, fid, children = 'children') { let map = [] arrList.forEach(item => { let up = arrList.filter(x => x[id] == item[fid]) let sit = arrList.filter(x => x[fid] == item[id]) if (sit.length) item[children] = sit if (!(up.length && !sit.length)) map.push(item) }) if (arrList.length == map.length) return map else return getArrayTree(map, id, fid)}export default getArrayTree

调用方式

参数

原数组,如 var arr = [{ Id: 'A01', fId: '', name: '楼栋1' },{ Id: 'B01', fId: 'A01', name: '楼栋1房间1' },{ Id: 'A02', fId: 'A00', name: '楼栋2' },{ Id: 'C01', fId: 'B01', name: '楼栋2C01' }] 元素id元素父级id元素子级命名(不传默认为children)


返回树状排序后的数组,结果如下:
优点 不需要引入工具包,在utils新建个js放进去就行,轻便使用尾递归,避免堆栈超出可使用自身数组的id及父级id,不需要将数组的id重命名可自定义返回子类名称,之后引用更方便

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。