一维数组转树结构数组方法
1. 方法
/**
* 将一维数组转换为树结构
* @param {array} data - 输入的一维数组
* @return {array} 树结构数组
*/
function arraytotree(data) {
// 创建一个id映射,用来快速查找元素
const idmap = {};
// 遍历数组,初始化每个元素的children字段,并将其存入idmap
data.foreach(item => {
idmap[item.id] = { ...item, children: [] };
});
// 初始化一个数组,用来存储根节点
const tree = [];
// 再次遍历数组,根据parentid建立树结构
data.foreach(item => {
const { id, parentid } = item;
if (parentid == '' || parentid == null || parentid == undefined) {
// 如果parentid为null或undefined,表示是根节点
tree.push(idmap[id]);
} else {
// 否则,将当前元素添加到其父元素的children字段中
if (idmap[parentid]) {
idmap[parentid].children.push(idmap[id]);
}
}
});
return tree;
}
使用注意
- 根元素
parentid的判定条件 - 元素的唯一字段是
id和父级字段是parentid
2.数组结构data
let data = [
{ id: '1', parentid: '' },
{ id: '1_1', parentid: '1' },
{ id: '2', parentid: '' }
];
3.调用
let tree = arraytotree(data);
打印结果
[
{
"id": "1",
"parentid": "",
"children": [
{
"id": "1_1",
"parentid": "1",
"children": []
}
]
},
{
"id": "2",
"parentid": "",
"children": []
}
]
到此这篇关于js一维数组转多维数组树的方法的文章就介绍到这了,更多相关js一维转多维数组内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论