javascript - 从深层嵌套对象中的值获取父键和祖父键
问题描述
我有一个深层嵌套的 JavaScript 对象,并且我知道一个位于对象最低位置的值。我想知道父键和祖父键。
我设置了一个 jsbin https://jsbin.com/yimugezuxe/edit?js,console
基于值'uniqueID#9aserdf'我想知道/返回它的父键:'Stage 2'和'Level 2'来自下面的对象:
const obj = {
"Level 1": {
"Stage 1": [
{
"title": "Parent 1",
"id": "Parent1#id",
"Children": [
{
"title": "Steve",
"id": "uniqueID1"
},
{
"title": "James",
"id": "uniqueID#9"
}
]
}
]
},
"Level 2": {
"Stage 1": [
{
"title": "Parent 4",
"id": "Parent4#id",
"Children": [
{
"title": "Tim",
"id": "uniqueIDadsf"
},
{
"title": "Hans",
"id": "uniqueID#9asdf"
}
]
}
],
"Stage 2": [
{
"title": "Parent 10",
"id": "Parent10#id",
"Children": [
{
"title": "Chris",
"id": "uniqueIDadsf33"
},
{
"title": "Jack",
"id": "uniqueID#9aserdf"
}
]
}
]
}
};
// based on the value 'uniqueID#9aserdf' I want to know/return its parent keys: 'Stage 2' and 'Level 2'
解决方案
像这样的东西:
for (var prop in obj) {
for (var prop2 in obj[prop]) {
}
}
然后用这个方法向下迭代检查
这是一个完整的例子:
for (var prop in obj) {
for (var prop2 in obj[prop]) {
//console.log(prop2);
for (var prop3 in obj[prop][prop2]) {
//console.log("->"+prop3);
for (var prop4 in obj[prop][prop2][prop3]) {
//console.log("->"+"->"+prop4);
for (var prop5 in obj[prop][prop2][prop3][prop4]) {
//console.log("->"+"->"+"->"+prop5);
for (var prop6 in obj[prop][prop2][prop3][prop4][prop5]) {
//console.log("->"+"->"+"->"+"->"+prop6);
if (obj[prop][prop2][prop3][prop4][prop5][prop6] == "uniqueID#9aserdf") {
console.log("Stage :" +prop2 + " == Level :" + prop);
}
}
}
}
}
}
}
您可以去掉代码中的注释,以帮助查看您在对象中的位置。
推荐阅读
- python-3.x - 使用 python 数学模块生成锯齿波
- reactjs - 从 utf-8 编码的 rest api 调用响应中提取压缩图像,并将这些图像显示给用户做出反应,无需下载
- c++ - 为什么 std::filesystem::path("//.") 与 std::filesystem::path("//") / std::filesystem::path(".") 不同?
- c++ - 数组到图像的替代品
- r - 无法安装 nloptr (R 4.0.3, Ubuntu 20.04)
- tinymce - Tinymce 5 对话框 urlinput 禁用/启用损坏
- terraform - 模块内部无法识别配置的提供程序
- amazon-s3 - 将批量 csv 数据上传到现有 DynamoDB 表中
- html - 移动菜单以 HTML 格式放大整个网站
- elixir - 在长生不老药中访问中间结果