8

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

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

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

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

4

2 回答 2

12

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

var pattern = /^zzz[0-9]+/;
for (var varName in window) {
    if (pattern.test(varName)) {
        ArrayOfAllFoundVariables.push(window[varName]);
    }
}
于 2013-03-24T10:10:45.953 回答
1

Mikke 打败了我 :)

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

}

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

于 2013-03-24T10:20:32.823 回答