基于JSON值获取密钥
Get key based on JSON value
我想知道JSON对象中的递归键。例如,JSON对象类似于
{
"Division1" : {
"checked": true,
"level": 1,
"District1-1": {
"checked": true,
"level": 2,
"Area1-1-1": {
"checked": true,
"level": 3,
"Project1-1-1-1": {
"checked": true,
"level": 4
}
},
"Area1-1-2": {
"checked": true,
"level": 3,
"Project1-1-2-1": {
"checked": true,
"level": 4,
"05": {
"checked": true,
"level": 5
}
}
}
}
}
}
并且我能够找到"Project1-1-1-1",我应该能够在数组中找到并存储的"Area1-1-1"、"District1-1"、"Division1"如何执行递归搜索来存储父/祖父密钥?
我正在使用javascript使成为可能
当前JS:
var parent = [];
$.test.getObjects = function(obj, key, val) {
var objects = [];
for (var i in obj) {
if (!obj.hasOwnProperty(i)){ continue; }
if (typeof obj[i] == 'object') {
// console.log(i);
parent.push(i);
objects = objects.concat($.test.getObjects(obj[i], key, val));
}
//if key matches and value matches or if key matches and value is not passed (eliminating the case where key matches but passed value does not)
if (i == key && obj[i] == val || i == key && val == '') { //
objects.push({"parent": parent,"children": obj});
} else if (obj[i] == val && key == ''){
//only add if the object is not already in the array
if (objects.lastIndexOf(obj) == -1){
objects.push({"parent": parent,"children": obj});
}
}
}
return objects;
};
我正在修改我以前的答案,所以我要删除它。看起来我根本不理解你的问题:)
AFAIK,Javascript数组/字典不存储父关系,所以我认为唯一可以做到这一点的方法是从父开始检查整个树。你应该递归地遵循的步骤:
1-获取子数组(使用Object.keys(var)方法)
2-如果它不是您要查找的键,请为每个子项运行递归方法。作为一个参数,您应该传递一个数组,累积以前运行中获得的所有以前的键,并添加您即将访问的子项的键。
3-如果这是你正在寻找的密钥,只需存储你一直在积累的所谓数组,就可以了!
接下来,您应该能够使用几个参数来执行一个简单的递归方法:您正在检查的数组的当前点,以及可能成为结果的所谓累积数组。
我不知道是否还有比这更简单的方法。
相关文章:
- 如何获取$data.Entity的密钥
- 通过localStorage中的密钥获取ID
- 从密钥中获取价值.JavaScript
- 根据用户选择获取 JSON 密钥
- 从包含密钥路径的字符串中获取json值
- 如何在javascript中获取数组密钥对的json子值
- 获取密钥代码值 - JavaScript
- 获取在javascript中进行双击时关闭的密钥
- 获取关联数组的密钥
- 使用 Javascript 获取 Sharepoint 当前用户密钥
- 获取密钥 Json 并使用名称 var 进行搜索
- 当数组只有 1 个元素时,从 javascript 数组中获取密钥
- 从字符串中获取密钥代码/密钥
- 跨浏览器获取密钥代码
- 使用 drive.files.export (Drive API v3) + API 密钥以文本/纯文本格式获取公共 G
- 如何获取ajax响应数组的密钥以建立数据表的标头
- 如何在 JavaScript 对象中获取这些密钥
- 如何使用Firebase的防火功能从推送中获取新生成的密钥
- 如何获取JSON对象(javascript)中的所有密钥
- 无法为Phonegap生成密钥获取keytool错误