考虑这个对象:
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);
但是,A
、B
、C
和 o
键可以更改。我可以创建这个数组吗
其他方式?我想过为 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/