用es6写一个感觉level和parentId来把一维数组转换成多维数组的方法
时间: 2023-12-10 22:38:04 浏览: 86
JavaScript将一个数组插入到另一个数组的方法
可以使用递归来实现把一维数组转换成多维数组的方法,具体代码如下:
```javascript
function convertToTree(arr, level = 0, parentId = null) {
const result = [];
for (let i = 0; i < arr.length; i++) {
const item = arr[i];
if (item.level === level && item.parentId === parentId) {
const children = convertToTree(arr, level + 1, item.id);
if (children.length > 0) {
item.children = children;
}
result.push(item);
}
}
return result;
}
```
这个方法接收一个一维数组 `arr`,以及可选的 `level` 和 `parentId` 参数。默认情况下,`level` 和 `parentId` 都为 `null`。
在方法中,我们首先定义一个空数组 `result`,用于保存当前层级的所有节点。然后,我们遍历数组 `arr`,对于每个元素,如果它的 `level` 和 `parentId` 与当前层级和父节点匹配,就把它添加到 `result` 中,并递归调用 `convertToTree` 方法来查找它的子节点。如果它有子节点,我们就把子节点添加到当前节点的 `children` 属性中。
最后,我们返回 `result` 数组,这个数组就是我们要求的多维数组。
注意,这个方法假设输入的数组已经按照 `level` 和 `parentId` 排序,并且每个元素都包含 `id`、`level` 和 `parentId` 字段。如果需要的话,你可以根据实际情况对代码进行修改。
阅读全文