gpt4 book ai didi

javascript - 如何获取 JavaScript 对象中给定键/值的路径?

转载 作者:太空宇宙 更新时间:2023-11-04 02:33:58 25 4
gpt4 key购买 nike

我环顾四周,但没有找到解决这个问题的方法:
我正在尝试获取导致给定键或值的完整路径(键列表)(考虑到帐户欺骗)。
我知道它与这个问题类似: how to get the path of an object's value from a value in javascript
但您可能会发现不同的方式:
- 通过按键
- 按值(value)
- 如果存在任何欺骗,它应该返回所有可能性的数组
一个简短的例子比长篇大论更能说明问题:

示例代码:

var data = {
"key1": {
"key1SubKey1": {
"key1SubSubKey1": "key1SubSubKey1_value"
},
"key1SubKey2": {
"key1SubSubKey2": "key1SubSubKey2_value"
},
"key1SubKey3": {
"key1SubSubKey3": "key1SubSubKey3_value"
},
"duplicatedKey": "duplicated_value"
},
"key2": {
"key2SubKey1": {
"key2SubSubKey1": "key2SubSubKey1_value"
},
"key2SubKey2": {
"key2SubSubKey2": "key2SubSubKey2_value"
},
"key2SubKey3": {
"key2SubSubKey3": "key2SubSubKey3_value"
},
"duplicatedKey": "duplicated_value"
}
}

使用示例

按值搜索

getPathFromValue (data, "key2SubSubKey1_value") ;
// This should return : data['key2']['key2SubKey1']['key2SubSubKey1']

getPathFromValue (data, "duplicated_value") ;
// [ data['key1']['duplicatedKey'], data['key2']['duplicatedKey'] ]

按键搜索

getPathFromKey (data, "key2SubSubKey1") ;
// data['key2']['key2SubKey1']

getPathFromKey (data, "duplicatedKey") ;
// [ data['key1'], data['key2'] ]

最佳答案

请尝试以下操作:

    function findValue(data, value,path){
if(typeof(data) != "object" || Object.keys(data).length == 0)
return { "path" : "" , "value" : ""};

for(var prop in data) {
if (data[prop] == value)
return { "path" : path + "['" + prop + "']" , "value" : value};
}


for(var prop in data) {
var result = findValue(data[prop],value,path === undefined ? "['" + prop + "']" : path + "['" + prop + "']" );

if (typeof(result) !== typeof(undefined) && result.value != "") {
return result;
}
}
}

执行 var result = findValue(data,"key1SubSubKey1_value") 将产生一个具有以下属性的对象:值和路径。

要获取路径,只需访问 result.path。

关于javascript - 如何获取 JavaScript 对象中给定键/值的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24178840/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com