Mai mult
Pentru..În bucle în JavaScript - perechi de valori-cheie
Mă întrebam dacă nu's o modalitate de a face ceva ca un PHP "foreach" buclă în JavaScript. Funcționalitatea I'm în căutarea pentru ceva de genul acesta PHP Fragment:
foreach($data as $key => $value) { }
M-am uitat la JS pentru..în buclă, dar nu pare a fi nici o modalitate de a specifica "ca". Dacă am face acest lucru cu un 'normal' pentru buclă (pentru(var i = 0; i < date.length; i++
), există o modalitate de a apuca o cheie => perechi de valori?
376
15
hasOwnProperty
este folosit pentru a verifica dacă "țintă" are într-adevăr acea proprietate, mai degrabă decât au moștenit-o de la prototipul său. Un pic mai simplu ar fi:Acesta verifică doar că " k "nu este o metoda (ca și în cazul "țintă" este "matrice" ai'll obține o mulțime de metode de a alertat, de exemplu,
indexOf
, "push", "pop", etc.)Nimeni nu a pomenit de Obiect.tastele așa că mi-am'll-l menționez.
Dacă puteți utiliza ES6 nativ sau cu Babel (js compiler), atunci ai putea face următoarele:
Care va imprima această ieșire:
Obiectul.intrări () metoda returnează o matrice de un obiect dat's propria enumerable proprietatea
[cheie, valoare]pe perechi, în aceeași ordine ca cea oferită de un
în` bucla (diferența fiind că un pentru-în buclă enumeră proprietăți în lanț prototip precum).Sper că vă ajută! =)
în va lucra pentru tine.
În moderne JavaScript puteți, de asemenea, face acest lucru:
Sintaxa php este doar zahăr.
Presupun că știi că " eu " este cheia și că puteți obține valoarea via
a datelor[i]
(și vreau doar o scurtătură pentru acest lucru).ECMAScript5 introdus "forEach" [MDN] pentru tablouri (se pare că aveți o matrice):
MDN documentația oferă un shim pentru browsere nu o susțin.
Desigur, acest lucru nu funcționează pentru obiecte, dar puteți crea o funcție similară pentru ei:
Când ai etichetat întrebarea cu [tag:jquery], jQuery oferă
$.fiecare
[documente], care bucle pe ambele, matrice și obiect structuri.În javascript, fiecare obiect are o grămadă de built-in de perechi cheie-valoare, care au meta-informații. Atunci când bucla prin toate perechi cheie-valoare pentru un obiect're looping prin ei. Utilizarea de hasOwnProperty() filtrele astea.
Puteți folosi pentru..în` pentru asta.
ES6 va oferi Hartă.prototip.forEach(callback) care pot fi utilizate astfel de prognoze
Dacă utilizați Lodash, puteți utiliza
_.forEach
Puteți utiliza un 'de la' bucla pentru acest lucru:
Mai jos este un exemplu care devine la fel de aproape ca te.
Daca're folosind jQuery vedea: http://api.jquery.com/jQuery.each/
da, puteți avea tablouri asociative, de asemenea, în javascript: