Ho un oggetto JavaScript come il seguente:
var p = {
"p1": "value1",
"p2": "value2",
"p3": "value3"
};
Ora voglio fare un ciclo attraverso tutti gli elementi p
(p1
, p2
, p3
...) E ottenere le loro chiavi e valori. Come posso farlo?
Posso modificare l'oggetto JavaScript se necessario. Il mio obiettivo finale è quello di fare un loop attraverso alcune coppie chiave-valore e se possibile voglio evitare di usare eval
.
Puoi usare il ciclo for-in
come mostrato da altri. Tuttavia, devi anche assicurarti che la chiave che ottieni sia una proprietà effettiva di un oggetto, e non provenga dal prototipo.
Ecco lo snippet:
var p = {
"p1": "value1",
"p2": "value2",
"p3": "value3"
};
for (var key in p) {
if (p.hasOwnProperty(key)) {
console.log(key + " -> " + p[key]);
}
}
For-of con l'alternativa Object.keys():
var p = {
0: "value1",
"b": "value2",
key: "value3"
};
for (var key of Object.keys(p)) {
console.log(key + " -> " + p[key])
}
Notate l'uso di for-of
invece di for-in
, se non usato restituirà undefined sulle proprietà nominate, e Object.keys() assicura l'uso delle sole proprietà dell'oggetto senza le proprietà dell'intera catena di prototipi
for(key in p) {
alert( p[key] );
}
Nota: potete fare questo sugli array, ma dovrete iterare anche sulla lunghezza
e su altre proprietà.