[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] |