Zaujímalo by ma, či existuje spôsob, ako v JavaScripte urobiť niečo podobné ako cyklus PHP foreach
. Funkcia, ktorú hľadám, je niečo ako tento PHP Snippet:
foreach($data as $key => $value) { }
Pozeral som sa na cyklus for..in
v JS, ale zdá sa, že neexistuje spôsob, ako špecifikovať as
. Ak to urobím pomocou 'normálneho' cyklu for (for(var i = 0; i < data.length; i++
), existuje spôsob, ako zachytiť dvojice kľúč => hodnota?
for (var k in target){
if (target.hasOwnProperty(k)) {
alert("Key is " + k + ", value is " + target[k]);
}
}
hasOwnProperty
sa používa na kontrolu, či váš target
skutočne má túto vlastnosť, a nie zdedil ju od svojho prototypu. O niečo jednoduchšie by bolo:
for (var k in target){
if (typeof target[k] !== 'function') {
alert("Key is " + k + ", value is" + target[k]);
}
}
Kontroluje len, či k
nie je metóda (pretože ak target
je array
, upozorní vás to na množstvo metód, napr. indexOf
, push
, pop
, atď.)