Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.5k views
in Technique[技术] by (71.8m points)

js中使用递归,取出后台返回的深层嵌套json中的动态key和value

image.png
如上图所示为后台返回的数据,是一个多层嵌套的json数据,前端将调用此接口返回的数据存入了result变量。

该json中存在动态的key,如图中绿色标识。我想要取出部分值用于组件中显示,而这些动态key所对应的值不方便按照xxx.key的形式获取到。

因此考虑使用递归遍历这个嵌套json,然后将符合key=value的数据存入一个数组中,如下方代码所示

/* 根据动态key获取值 */
  const getValue = (jsonData:any)=>{
    let arr = []   //存放动态key和value相等的数据
    for (var key in jsonData){
      if(jsonData[key] && typeof(jsonData[key])  == 'object'){
        getValue(jsonData[key])
        if(key==jsonData[key]){
          arr.push({
            key:key,
            value:jsonData[key]
          })
        }
      }
    }
    return arr
  }

  let kk = getValue(result)
  console.log(kk);

打印结果如下图:result(如72行所示)包含了全部的返回数据,但是kk为空数组(如92行所示)。
image.png

请问这里是哪儿出了问题,为什么没能取到值呢,kk为什么会为空?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

image.png


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...