我正在尝试在 json 中搜索属性名称,如果可以找到该属性,则返回它的值,否则返回 null。
function returnValueAtProperty(string, exampleObject) {
for (ch1 in exampleObject) {
if (ch1 === string) {
return exampleObject[ch1];
} else if (typeof(exampleObject[ch1]) == 'object') {
var ob = exampleObject[ch1]
for (ch2 in ob) {
return returnValueAtProperty(string, ob[ch2])
}
} else if (Array.isArray(exampleObject[ch1])) {
var arr = exampleObject[ch1];
for (var i = 0; i < arr.length;) {
return returnValueAtProperty(string, arr[i])
}
}
}
}
var exampleObject = {
"key0": 42,
"key1": {
"key2": [{
"key3": "tag",
"key4": false
},
{
"key5": null,
"key6": [3, 141]
}
],
"key7": null
}
}
console.log(returnValueAtProperty("key3", exampleObject));
该函数应返回“标签”字符串。或者如果我调用像 returnValueAtProperty("key6", exampleObject) 这样的函数,它应该返回数组
最佳答案
我只是稍微改变了你的代码我相信如果你在对象验证之前改变数组验证它会更好,在 javascript 中甚至数组类型也可以返回一个对象所以数组很可能进入内部 在第一个 else if 波纹管中,我向您展示我所做的代码更改
for(ch1 in exampleObject){
if(typeof ch1 === string){
return exampleObject[ch1];
} else if(Array.isArray(exampleObject[ch1])){
var arr = exampleObject[ch1];
for(var i=0; i<arr.length;){
return returnValueAtProperty(string,arr[i])
}
}
else if(typeof(exampleObject[ch1])=='object'){
var ob = exampleObject[ch1]
for(ch2 in ob){
return returnValueAtProperty(string, ob[ch2])
}
}
}
关于javascript - 递归搜索 JSON 对象中的属性名称 {String} 并返回关联值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55326181/