有一个数组 数组包含无数个对象,每个对象都有ID和 children数组 ,每个children 同样和父级一样有ID和children ,用JS创建一个JS函数,接收一个ID, 返回该ID对应的节点和它所有的父级节点
时间: 2024-11-29 09:35:30 浏览: 3
JavaScript将数组转化为多级树状结构.zip
为了实现这个功能,你可以使用递归的方式来遍历并构建树结构。下面是一个简单的JavaScript函数示例,它接受一个`id`作为输入,并返回匹配的节点以及其所有父级节点:
```javascript
function findNodeAndParents(array, id, parents = []) {
// 遍历数组中的每个元素
for (let node of array) {
// 如果找到匹配的节点
if (node.id === id) {
// 将当前节点添加到结果中
const result = { ...node, parentIds: parents };
// 添加当前节点到父级数组
parents.push(node.id);
// 递归查找当前节点的所有子节点及其父级
const childrenResult = findNodeAndParents(node.children, id, parents.slice());
// 如果找到了子节点,合并结果
if (childrenResult.length > 0) {
result.children = childrenResult;
}
return result;
}
// 如果当前节点不是目标,继续递归检查它的子节点
if (node.children && Array.isArray(node.children)) {
const childResult = findNodeAndParents(node.children, id, parents);
if (childResult.length > 0) {
// 如果子节点找到结果,则返回
return childResult;
}
}
}
// 如果找不到,返回空数组
return [];
}
// 使用示例
const nodesData = [
{ id: 'root', children: [{ id: 'a', children: [{ id: 'b' }] }, { id: 'c' }] },
// 更多节点...
];
const targetId = 'b';
const result = findNodeAndParents(nodesData, targetId);
console.log(result); // 包含匹配节点和父级的信息
//
阅读全文