我正在为一个我无法控制的网站编写插件,但我无法向其中添加JS代码(实际上,这是由过时的所见即所得html编辑器生成的一组html文档)。

出于我的目的,我需要获取以某种方式命名的所有变量。名称始终以zzz开头,并以数字结尾,从zzz1zzz999999。现在,我正在执行以下操作:

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]);
    }
}

10-01 17:51