js扁平数组如何查找所有父级节点
时间: 2023-07-07 08:09:20 浏览: 242
el-tree==>添加分级图标==>添加引导线样式==>点击节点展示全部父节点信息==>使用$store封装全局组件
可以通过递归的方式来查找一个元素的所有父级节点。具体实现方法如下:
1. 首先定义一个函数,接收两个参数:扁平数组和目标元素。
2. 在函数内部,首先遍历扁平数组,找到目标元素对应的对象。
3. 如果找到了目标元素,就将这个元素的父级节点的 id 存储到一个数组中。
4. 然后递归调用这个函数,传入扁平数组和当前元素的父级节点 id,继续查找父级节点的父级节点,直到找到根节点。
5. 最后返回存储父级节点 id 的数组。
下面是具体的实现代码示例:
```javascript
function findParentNodes(flatArr, targetId) {
const result = [];
// 遍历扁平数组,查找目标元素
for (let i = 0; i < flatArr.length; i++) {
if (flatArr[i].id === targetId) {
// 如果找到了目标元素,就将其父级节点的 id 存储到数组中
result.push(flatArr[i].parentId);
// 递归查找父级节点的父级节点
const parentNodes = findParentNodes(flatArr, flatArr[i].parentId);
result.push(...parentNodes);
break;
}
}
return result;
}
```
使用示例:
```javascript
const flatArr = [
{ id: 1, parentId: null },
{ id: 2, parentId: 1 },
{ id: 3, parentId: 2 },
{ id: 4, parentId: 2 },
{ id: 5, parentId: 1 }
];
const parentNodes = findParentNodes(flatArr, 3);
console.log(parentNodes); // [2, 1, null]
```
这个例子中,我们定义了一个扁平数组,其中每个对象都有一个 id 和 parentId 属性,用于表示节点的关系。我们调用了 findParentNodes 函数,并传入了扁平数组和目标元素的 id(这里是 3),函数返回了一个数组,包含了所有父级节点的 id。最后输出了这个数组。
阅读全文