Ik heb een JavaScript object zoals het volgende:
var p = {
"p1": "value1",
"p2": "value2",
"p3": "value3"
};
Nu wil ik door alle p
elementen lopen (p1
, p2
, p3
...) en hun sleutels en waarden krijgen. Hoe kan ik dat doen?
Ik kan het JavaScript object aanpassen indien nodig. Mijn uiteindelijke doel is om door een aantal sleutel-waarde paren te lopen en indien mogelijk wil ik het gebruik van eval
vermijden.
Je kunt de for-in
lus gebruiken zoals anderen hebben laten zien. Je moet er echter ook voor zorgen dat de sleutel die je krijgt een echte eigenschap van een object is, en niet'uit het prototype komt.
Hier is het knipsel:
var p = {
"p1": "value1",
"p2": "value2",
"p3": "value3"
};
for (var key in p) {
if (p.hasOwnProperty(key)) {
console.log(key + " -> " + p[key]);
}
}
Voor-of met Object.keys() alternatief:
var p = {
0: "value1",
"b": "value2",
key: "value3"
};
for (var key of Object.keys(p)) {
console.log(key + " -> " + p[key])
}
Let op het gebruik van for-of
in plaats van for-in
, indien niet gebruikt zal het undefined teruggeven op benoemde eigenschappen, en Object.keys() verzekert het gebruik van alleen de object's eigen eigenschappen zonder de hele prototype-keten eigenschappen
for(key in p) {
alert( p[key] );
}
Opmerking: je kunt dit over arrays doen, maar je'itereert dan ook over de lengte
en andere eigenschappen.