Hvordan gennemløber eller opregner jeg et JavaScript-objekt?

Jeg har et JavaScript-objekt som følgende:

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

Nu ønsker jeg at gennemløbe alle p-elementer (p1, p2, p3...) og få deres nøgler og værdier. Hvordan kan jeg gøre det?

Jeg kan ændre JavaScript-objektet, hvis det er nødvendigt. Mit endelige mål er at gennemløbe nogle nøgle-værdipar, og hvis det er muligt, vil jeg gerne undgå at bruge eval.

Løsning

Du kan bruge for-in-loop'en som vist af andre. Du skal dog også sikre dig, at den nøgle, du får, er en faktisk egenskab ved et objekt og ikke kommer fra prototypen.

Her er udklippet:

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])
}

Bemærk brugen af for-of i stedet for for-in, hvis det ikke bruges, vil det returnere udefineret på navngivne egenskaber, og Object.keys() sikrer kun brugen af objektets egne egenskaber uden hele prototype-kædens egenskaber

Kommentarer (27)

Du kan bare iterere over det som:

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

Bemærk, at key ikke overtager værdien af egenskaben, det er blot en indeksværdi.

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

Bemærk: du kan gøre dette over arrays, men du vil også iterere over length og andre egenskaber.

Kommentarer (5)