获取以某个字符串开头的所有JS变量

时间:2013-03-24 09:58:46

标签: javascript optimization refactoring global-variables

我正在为一个我无法控制的网站编写插件,除了我能够为其添加JS代码(事实上它是由一个过时的wysiwyg html编辑器生成的一组html文档)。

出于我的目的,我需要获得以某种方式命名的所有变量。该名称始终以zzz开头,以zzz1zzz999999之间的数字结尾。现在我正在做以下事情:

for (var i=1; i<999999; i++) {
    if (typeof window['zzz'+i] !== 'undefined') { 
       ArrayOfAllFoundVariables.push( window['zzz'+i] )
    }
}

我想知道是否有更有效的方法来检测这些变量,而不是迭代一百万个未定义的变量。

2 个答案:

答案 0 :(得分:7)

您可以遍历所有顶级变量(window的属性),然后测试它们的名称是否与某些正则表达式模式匹配。像以前一样收集匹配的变量。

var pattern = /^zzz[0-9]+/;
for (var varName in window) {
    if (pattern.test(varName)) {
        ArrayOfAllFoundVariables.push(window[varName]);
    }
}

答案 1 :(得分:1)

Mikke打败了我:)

for (element in window) {
  if (element.substring(0,3) == 'zzz') {
    ArrayOfAllFoundVariables.push(window[element]);
  }

}

但我错过了数字部分:) ...做得好Mikke ...