2013-03-24 21 views
5

Piszę wtyczkę dla strony internetowej, nad którą nie mam kontroli, z wyjątkiem mojej możliwości dodania do niej kodu JS (w rzeczywistości jest to zestaw dokumentów html wygenerowanych przez przestarzałe edytor haseł wysiwyg).Pobierz wszystkie zmienne JS zaczynające się od określonego ciągu

Dla moich celów, potrzebuję uzyskać wszystkie zmienne, które są nazwane w określony sposób. Nazwa zawsze zaczyna się od zzz i kończy się numerem od zzz1 do zzz999999. Teraz robię, co następuje:

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

Zastanawiam się, czy istnieje bardziej skuteczny sposób, aby wykryć te zmienne inne niż iteracja milion undefineds.

Odpowiedz

7

Można iterować wszystkie zmienne najwyższego poziomu (właściwości window), a następnie sprawdzić, czy ich nazwa pasuje do jakiegoś wzorca regex. Zbierz pasujące zmienne jak poprzednio.

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

Mikke mnie uprzedził :)

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

}

ale brakowało mi się część numer :) ... dobrze zrobione Mikke ...

Powiązane problemy