Hvordan løkker jeg gjennom eller teller opp et JavaScript-objekt?

Jeg har et JavaScript-objekt som det følgende:

var p = {
    "p1": "value1",
    "p2": "value2",
    "p3": "value3"
};

Nå vil jeg løkke gjennom alle p elementer (p1, p2, p3...) og få deres nøkler og verdier. Hvordan kan jeg gjøre det?

Jeg kan endre JavaScript-objektet om nødvendig. Mitt endelige mål er å løkke gjennom noen nøkkelverdipar, og hvis mulig vil jeg unngå å bruke eval.

Løsning

Du kan bruke "for-in"-sløyfen som vist av andre. Du må imidlertid også sørge for at nøkkelen du får er en faktisk egenskap til et objekt, og ikke kommer fra prototypen.

Her er kodestykket:

var p = {
    "p1": "value1",
    "p2": "value2",
    "p3": "value3"
};

for (var key in p) {
    if (p.hasOwnProperty(key)) {
        console.log(key + " -> " + p[key]);
    }
}

For-of med Object.keys()-alternativ:

var p = {
    0: "value1",
    "b": "value2",
    key: "value3"
};

for (var key of Object.keys(p)) {
    console.log(key + " -> " + p[key])
}

Legg merke til bruken av for-of i stedet for for-in, hvis det ikke brukes vil det returnere udefinert på navngitte egenskaper, og Object.keys() sikrer bruk av bare objektets egne egenskaper uten hele prototype-kjeden egenskaper

Kommentarer (27)

Du kan bare iterere over det som:

for (var key in p) {
  alert(p[key]);
}

Merk at key ikke vil ta på seg verdien av egenskapen, det er bare en indeksverdi.

Kommentarer (2)
for(key in p) {
  alert( p[key] );
}

Merk: du kan gjøre dette over matriser, men du vil også iterere over lengden og andre egenskaper.

Kommentarer (5)