Имам обект на JavaScript, който изглежда по следния начин:
var p = {
"p1": "value1",
"p2": "value2",
"p3": "value3"
};
Сега искам да направя цикъл през всички елементи p
(p1
, p2
, p3
...) и да получа техните ключове и стойности. Как мога да направя това?
Мога да променя обекта на JavaScript, ако е необходимо. Крайната ми цел е да направя цикъл през някои двойки ключове и стойности и ако е възможно, искам да избегна използването на eval
.
Можете да използвате цикъла for-in
, както е показано от други. Трябва обаче да се уверите, че ключът, който получавате, е действително свойство на обекта, а не идва от прототипа.
Ето откъса:
var p = {
"p1": "value1",
"p2": "value2",
"p3": "value3"
};
for (var key in p) {
if (p.hasOwnProperty(key)) {
console.log(key + " -> " + p[key]);
}
}
For-of с алтернатива на Object.keys():
var p = {
0: "value1",
"b": "value2",
key: "value3"
};
for (var key of Object.keys(p)) {
console.log(key + " -> " + p[key])
}
Обърнете внимание на използването на for-of
вместо for-in
, ако не се използва, ще се върне неопределено за именуваните свойства, а Object.keys() гарантира използването само на собствените свойства на обекта, без свойствата на цялата верига от прототипи
Можете просто да го прегледате по следния начин:
for (var key in p) {
alert(p[key]);
}
Обърнете внимание, че key
няма да придобие стойността на свойството, а е само стойност на индекса.
for(key in p) {
alert( p[key] );
}
Забележка: можете да направите това над масиви, но ще итерирате и над дължината
и други свойства.