多鱼小站-薅羊毛社区,折扣网
标题:
从javascript对象中选择父节点
[打印本页]
作者:
lacken
时间:
2024-7-29 13:58
标题:
从javascript对象中选择父节点
[md]你有一个嵌套的数组结构,并且你想根据子节点的值找到其父节点。在 JavaScript 中,你可以递归地遍历这个数组来找到具有特定 `name` 属性的子节点,并接着获取其父节点。`hasChildNodes()` 是一个 DOM 方法,用于检查一个节点是否有子节点,它不适用于你的情况,因为你处理的是 JavaScript 对象数组,而不是 DOM 节点。
下面是一个可能的 `getParentElement` 函数实现,该函数递归地搜索具有指定 `name` 的对象,并返回其父对象:
```javascript
function getParentElement(items, childName) {
let result = null;
function search(items) {
for (const item of items) {
if (item.name === childName) {
return item;
}
if (item.items) {
const found = search(item.items);
if (found) {
if (!result) {
result = {
...item,
items: [found]
};
}
return found;
}
}
}
return null;
}
const childItem = search(items);
return result;
}
// 示例数据
var table = [
// ... 你的数组数据
];
// 要搜索的子项名称
var itemName = 'Charge Type 1.2';
// 获取父元素
var parentElement = getParentElement(table, itemName);
console.log(parentElement);
```
这段代码定义了一个 `search` 函数,它是 `getParentElement` 函数内部的一个递归函数,用于在嵌套数组中查找具有指定 `name` 的项。一旦找到,它将返回该项,然后递归调用将返回到其父项,直到达到顶层。然后 `getParentElement` 函数返回找到的父项。
请注意,这个实现假设每个 `name` 是唯一的,或者至少在你搜索的上下文中是唯一的。如果有多个相同的 `name` 值,这个实现可能需要调整以处理这种情况。此外,返回的父项是一个新对象,包含了找到的子项和所有父属性,除了 `items` 属性,它只包含找到的子项链。如果你需要不同的行为,你可能需要调整代码以满足你的具体需求。
[/md]
欢迎光临 多鱼小站-薅羊毛社区,折扣网 (https://www.codeblogs.cn/)
Powered by Discuz! X3.5