我正在为一个我无法控制的网站编写插件,除了我能够为其添加JS代码(事实上它是由一个过时的wysiwyg html编辑器生成的一组html文档)。
出于我的目的,我需要获得以某种方式命名的所有变量。该名称始终以zzz
开头,以zzz1
到zzz999999
之间的数字结尾。现在我正在做以下事情:
for (var i=1; i<999999; i++) {
if (typeof window['zzz'+i] !== 'undefined') {
ArrayOfAllFoundVariables.push( window['zzz'+i] )
}
}
我想知道是否有更有效的方法来检测这些变量,而不是迭代一百万个未定义的变量。
答案 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 ...