javascript - 递归搜索对象的值

标签 javascript object recursion map-function

考虑这个对象:

pa = {
  "133": {
    "B": null,
    "C": {
      "A": null,
      "o": "http://example.com/upn?lmt=1423895085713162"
    }
  },
  "134": {
    "B": null,
    "C": {
      "A": null,
      "o": "http://example.com/upn?lmt=1423895111043714"
    }
  },
  "135": {
    "B": null,
    "C": {
      "A": null,
      "o": "http://example.com/upn?lmt=1423895094505523"
    }
  },
  "136": {
    "B": null,
    "C": {
      "A": null,
      "o": "http://example.com/upn?lmt=1423895096452313"
    }
  }
};

我想创建一个 URL 数组。通常我可以做类似的事情 这个:

qu = keys(pa).map(ro => pa[ro].C.o);

但是,ABCo 键可以更改。我可以创建这个数组吗 其他方式?我想过为 http: 做一个递归正则表达式,但我不确定 如何实现。

最佳答案

您可以将 JSON.stringify()String.prototype.match()RegExp 结合使用 /http:\/\/\w+\.\w+\/\w+\?\w+=\d+/g 匹配 "http:" 后跟两个正斜杠,按单词、点、单词、正斜杠、单词、问号字符、单词、等号,后跟数字。

或者,按照 @Sierra http:[^"]+ 的建议。

var pa = { "133": { "B": null, "C": { "A": null, "o": "http://example.com/upn?lmt=1423895085713162" } }, "134": { "B": null, "C": { "A": null, "o": "http://example.com/upn?lmt=1423895111043714" } }, "135": { "B": null, "C": { "A": null, "o": "http://example.com/upn?lmt=1423895094505523" } }, "136": { "B": null, "C": { "A": null, "o": "http://example.com/upn?lmt=1423895096452313" } } };

var arr = JSON.stringify(pa).match(/http:\/\/\w+\.\w+\/\w+\?\w+=\d+/g);

console.log(arr);

关于javascript - 递归搜索对象的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38558461/

相关文章:

java - 打印对象内的值

javascript - 使用数组中的数据更改对象字段

javascript - 谷歌分析跟踪代码与加载速度慢

java - 无法访问同一包但不同文件夹中的对象

javascript - 关闭 jQuery UI 对话框的效果

python - 如何干净利落地避免递归函数中的循环(广度优先遍历)

java - 二叉搜索树小计数练习

python - 递归和二叉树

javascript - 如何在石灰调查验证中禁用 JavaScript 警报

javascript - "Access is denied"访问 iframe 文档对象时出错