Turiu tokį "JavaScript" objektą:
var p = {
"p1": "value1",
"p2": "value2",
"p3": "value3"
};
Dabar noriu pervesti visus p
elementus (p1
, p2
, p3
...) ir gauti jų raktus bei reikšmes. Kaip tai padaryti?
Jei reikia, galiu modifikuoti JavaScript objektą. Mano galutinis tikslas - pervesti ciklą per tam tikras raktų ir verčių poras ir, jei įmanoma, noriu nenaudoti eval
.
Galite naudoti for-in
ciklą, kaip rodo kiti. Tačiau taip pat turite įsitikinti, kad gaunamas raktas yra tikroji objekto savybė, o ne prototipas.
Todėl pateikiame fragmentą:
var p = {
"p1": "value1",
"p2": "value2",
"p3": "value3"
};
for (var key in p) {
if (p.hasOwnProperty(key)) {
console.log(key + " -> " + p[key]);
}
}
For-of su Object.keys() alternatyva:
var p = {
0: "value1",
"b": "value2",
key: "value3"
};
for (var key of Object.keys(p)) {
console.log(key + " -> " + p[key])
}
Atkreipkite dėmesį, kad vietoj for-in
naudojamas for-of
, jei jis nenaudojamas, įvardytoms savybėms bus grąžinama neapibrėžta reikšmė, o Object.keys() užtikrina, kad bus naudojamos tik paties objekto savybės, o ne visos prototipų grandinės savybės
for(key in p) {
alert( p[key] );
}
Pastaba: tai galima daryti ir per masyvus, tačiau taip pat reikės iteruoti ilgį
ir kitas savybes.