我正在为一个我无法控制的网站编写插件,但我无法向其中添加JS代码(实际上,这是由过时的所见即所得html编辑器生成的一组html文档)。
出于我的目的,我需要获取以某种方式命名的所有变量。名称始终以zzz
开头,并以数字结尾,从zzz1
到zzz999999
。现在,我正在执行以下操作:
for (var i=1; i<999999; i++) {
if (typeof window['zzz'+i] !== 'undefined') {
ArrayOfAllFoundVariables.push( window['zzz'+i] )
}
}
我想知道是否有更有效的方法来检测这些变量,而不是遍历一百万个 undefined variable 。
最佳答案
您可以遍历所有顶级变量(window
的属性),然后测试其名称是否与某些正则表达式模式匹配。像以前一样收集匹配变量。
var pattern = /^zzz[0-9]+/;
for (var varName in window) {
if (pattern.test(varName)) {
ArrayOfAllFoundVariables.push(window[varName]);
}
}