javascript - 递归搜索 JSON 对象中的属性名称 {String} 并返回关联值

标签 javascript json recursion

我正在尝试在 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/

相关文章:

java - 您使用 Javascript 的效率是否与使用 .Net 或 Java 一样高?

javascript - useLazyQuery - 重新渲染问题

python - 在 Python 中使用递归计算 exp(x)

c - 程序挂起,不输出任何东西

c - 从 C 递归错误输出的 Mips 翻译

javascript - 单击按钮时是否可以调用多个方法?

javascript - mailto:创建电子邮件时,Internet Explorer 在 Outlook 中反转时间字符串

javascript - JQuery - 获取关联数组的最小和最大日期

json - 使用 JSON 数据运行 Hive 查询时出错?

php - 在javascript中遍历一个有点复杂的json数组