多层嵌套的json数据,取出某个特定的key的数值。

比如有个json对象
var obj = {

"aa": "123",
"testkey": "#testkey1",
"list***": [
    {
     "bb": "123",
     "testkey": "#testkey2"
     },
     {
     "cc": "123",
     "testkey": "#testkey3"
     },
]

}
json对象是多层嵌套的,每层的键值不确定,
目的是想取出所有的key为testkey的值,即["#testkey1", "#testkey2", "#testkey3"]。
想知道如何优雅的实现这个需求呢?

尝试的方法:将json转化成字符串,然后正则提取对应的key, 但正则表达式写的比较渣,还没有弄出来。

阅读 9.9k
3 个回答
const getArrFromObj = obj => {
  const rtn = []
  const iter = obj => {
    rtn.push(obj.testkey)
    const match = Object.keys(obj).filter(i => i.match(/^list/))
    if (match.length) obj[match[0]].forEach(iter)
  }
  iter(obj)
  return rtn
}

clipboard.png

如果有帮到你请 upvote 或采纳~

按照你的思路来,大概是这样。。
var str=JSON.stringify(obj)
str.match(/(?<=("testkey":")).*?(?=")/g)

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题