js json通过对象的某个值查询父级节点
时间: 2023-12-05 18:04:18 浏览: 136
可以通过遍历整个 JSON 对象,找到包含目标值的节点,并记录下该节点的父节点,最后返回父节点。
以下是一个示例代码:
```javascript
function findParentNode(jsonObj, targetValue, parentPath = []) {
for (let key in jsonObj) {
let value = jsonObj[key];
let currentPath = parentPath.concat(key); // 记录当前路径
if (value === targetValue) {
return { node: jsonObj, parentPath };
} else if (typeof value === 'object') {
let parentNode = findParentNode(value, targetValue, currentPath);
if (parentNode) {
return parentNode;
}
}
}
}
let jsonObj = {
name: 'John',
age: 30,
address: {
street: '123 Main St',
city: 'Anytown',
state: 'CA'
}
};
let result = findParentNode(jsonObj, 'Anytown');
console.log(result); // { node: { street: '123 Main St', city: 'Anytown', state: 'CA' }, parentPath: ['address'] }
```
在上面的代码中,我们定义了一个名为 `findParentNode` 的函数,它接收三个参数:要查询的 JSON 对象、目标值和当前节点路径。函数会遍历整个 JSON 对象,如果找到目标值,就返回包含该值的节点和其父节点路径;如果当前节点是一个对象,则递归调用自身,直到找到目标值为止。最后,我们可以得到目标值所在节点的父节点路径。
阅读全文