vuejs list数组转树形
时间: 2023-06-28 13:06:06 浏览: 109
list转树形结构工具类
Vue.js中将一个数组转换成树形结构的方法有很多种,以下是其中一种:
假设我们有一个包含所有节点的数组`nodes`,每个节点包含一个`id`、一个`parent_id`和一个`name`,我们要将它们转换成树形结构。
首先,我们需要定义一个函数,用来在树形结构中查找某个节点的子节点:
```
function findChildren(node, nodes) {
const children = nodes.filter(n => n.parent_id === node.id);
return children.length ? { children } : {};
}
```
这个函数接受两个参数,第一个参数是要查找子节点的节点,第二个参数是所有节点的数组。它会返回一个包含`children`属性的对象,如果该节点没有子节点,则返回一个空对象。
接下来,我们可以使用`reduce()`方法将所有节点转换成树形结构:
```
const tree = nodes.reduce((acc, node) => {
if (node.parent_id === null) {
acc.push({ id: node.id, name: node.name, ...findChildren(node, nodes) });
}
return acc;
}, []);
```
这个方法接受两个参数,第一个参数是一个空数组,用来存储树形结构的根节点,第二个参数是所有节点的数组。
对于每个节点,如果它是根节点,则将它添加到树形结构中,并查找它的子节点。最后返回树形结构的根节点数组。
以上是一种 Vue.js 中将数组转换成树形结构的方法,当然还有其他的方法,可以根据具体的需求选择最适合的方法。
阅读全文