Mai mult
Cum de a găsi cheile de un hash?
Știu că în javascript Obiecte dublu ca hash-uri dar am fost în imposibilitatea de a găsi o construit în funcție pentru a obține cheile
var h = {a:'b',c:'d'};
Vreau ceva de genul
var k = h.keys() ; // k = ['a','c'];
Este simplu de a scrie o funcție mine pentru a itera peste articole și se adaugă cheile de la o matrice care mă voi întoarce, dar există un standard mai curat mod de a face asta?
Am sentimentul că trebuie să fie un simplu construit în funcție de care am ratat-o dar nu pot't găsi!
190
9
Există funcția moderne JavaScript (ECMAScript 5), numit
Obiect.tastele
a efectua această operație:Compatibilitate detalii pot fi găsite aici.
Pe ul Mozilla există, de asemenea, un fragment de compatibilitate:
Pentru codul de producție care necesită o mare compatibilitate cu clientul browsere vă sugerez încă Ivan Nevostruev's răspuns mai sus cu shim pentru a asigura
Obiect.cheile în browsere mai vechi. Cu toate acestea,'s posibil pentru a obține funcționalitatea exactă a solicitat ajutorul ECMA's nou
defineProperty` caracteristică.Cum de ECMAScript 5 - Obiect.defineProperty
Ca de ECMA5 puteți utiliza
Obiect.defineProperty()
pentru a defini non-nenumărate proprietăți. De curent de compatibilitate are încă mult de dorit, dar acest lucru ar trebui să devină în cele din urmă utilizabil în toate browsere. (În special nota de curent incompatibilitate cu IE8!)Cu toate acestea, deoarece ECMA5 adăugat deja
Obiect.tastele
s-ar putea folosi la fel de bine:Răspuns inițial
Edit: Deoarece acest răspuns a fost în jurul pentru un timp, am'll lăsa mai sus neatins. Oricine a citit acest lucru ar trebui să citiți, de asemenea, Ivan Nevostruev's de răspuns de mai jos.
Nu's nici o modalitate de a face prototip funcții non-enumerable care duce la ele întotdeauna de cotitură în pentru-în bucle pe care don't folosi hasOwnProperty`. Eu încă mai cred că acest răspuns ar fi ideal dacă extinderea prototip al Obiectului a fost't atât de murdar.
puteți folosi Obiect.tastele`
Ai putea folosi Underscore.js, care este un Javascript utility library.
Acesta este cel mai bun puteți face, după câte știu eu...
folosind jQuery puteți obține chei de genul asta:
Sau:
datorită @pimlottc
Cred că puteți bucla prin proprietățile obiectului folosind pentru/în, astfel încât ai putea face ceva de genul asta:
Am vrut sa folosesc top evaluat răspunsul de mai sus
Cu toate acestea, atunci când se utilizează în combinație cu google maps API v3, google maps este non-funcționale.
funcționează bine.
dacă vă sunt încercarea de a obține elemente, dar numai nu la funcții apoi acest cod poate ajuta
}
acest lucru este parte din punerea în aplicare a HashMap și vreau doar cheile, "asta" este hashmap obiect care conține cheile