js中如何将对象转成树
可以通过递归的方式将对象转成树。具体操作如下:
-
首先需要确定树形结构的数据格式,一般包含以下几个属性:id、name、children。
-
编写递归函数,将对象转成树形结构。函数的参数包括当前对象和父节点。
-
遍历当前对象的属性,如果属性值是对象,则将其递归处理,生成子节点,并将子节点添加到当前节点的 children 属性中。
-
如果属性值不是对象,则直接将其添加到当前节点的属性中。
-
最后返回当前节点。
示例代码如下:
function objToTree(obj, parentId) {
const tree = [];
for (const key in obj) {
if (obj.hasOwnProperty(key)) {
const node = {
id: key,
name: key,
children: [],
parentId: parentId
};
if (typeof obj[key] === 'object') {
node.children = objToTree(obj[key], key);
} else {
node.value = obj[key];
}
tree.push(node);
}
}
return tree;
}
const obj = {
a: {
b: {
c: 1,
d: 2
},
e: 3
},
f: 4
};
const tree = objToTree(obj, null);
console.log(tree);
输出结果:
[
{
"id": "a",
"name": "a",
"children": [
{
"id": "b",
"name": "b",
"children": [
{
"id": "c",
"name": "c",
"value": 1,
"parentId": "b"
},
{
"id": "d",
"name": "d",
"value": 2,
"parentId": "b"
}
],
"parentId": "a"
},
{
"id": "e",
"name": "e",
"value": 3,
"parentId": "a"
}
],
"parentId": null
},
{
"id": "f",
"name": "f",
"value": 4,
"parentId": null
}
]
``
原文地址: https://www.cveoy.top/t/topic/emDB 著作权归作者所有。请勿转载和采集!