Mam obiekt JavaScript jak poniżej:
var p = {
"p1": "value1",
"p2": "value2",
"p3": "value3"
};
Teraz chcę zapętlić wszystkie elementy p
(p1
, p2
, p3
...) I uzyskać ich klucze i wartości. Jak mogę to zrobić?
Mogę zmodyfikować obiekt JavaScript, jeśli to konieczne. Moim ostatecznym celem jest zapętlenie kilku par klucz-wartość i jeśli to możliwe, chcę uniknąć używania eval
.
Możesz użyć pętli for-in
, jak pokazali inni. Jednak musisz również upewnić się, że klucz, który otrzymujesz, jest rzeczywistą właściwością obiektu, a nie pochodzi z prototypu.
Tutaj znajduje się 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 z alternatywą Object.keys():
var p = {
0: "value1",
"b": "value2",
key: "value3"
};
for (var key of Object.keys(p)) {
console.log(key + " -> " + p[key])
}
Zwróć uwagę na użycie for-of
zamiast for-in
, jeśli nie jest to użyte, zwróci niezdefiniowane na nazwanych właściwościach, a Object.keys() zapewnia użycie tylko własnych właściwości obiektu'bez całego prototypu właściwości łańcucha
for(key in p) {
alert( p[key] );
}
Uwaga: możesz to zrobić nad tablicami, ale będziesz też iterował nad długością
i innymi właściwościami.