Kā veikt ciklu vai uzskaitīt JavaScript objektu?

Man ir šāds JavaScript objekts:

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

Tagad es gribu veikt cilpu caur visiem p elementiem (p1, p2, p3...) un iegūt to atslēgas un vērtības. Kā es to varu izdarīt?

Vajadzības gadījumā es varu modificēt JavaScript objektu. Mans galīgais mērķis ir veikt cilpu caur dažiem atslēgu un vērtību pāriem, un, ja iespējams, es vēlos izvairīties no eval izmantošanas.

Risinājums

Jūs varat izmantot for-in cilpu, kā to ir parādījuši citi. Tomēr jums ir arī jāpārliecinās, ka iegūtā atslēga ir faktiska objekta īpašība, nevis nāk no prototipa.

Šī ir fragments:

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

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

For-of ar Object.keys() alternatīvu:

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

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

Ievērojiet, ka for-of]1 vietā for-in tiek izmantots for-of, jo, ja tas netiks lietots, tiks atgrieztas nenoteiktas nosauktās īpašības, un Object.keys() nodrošina tikai objekta īpašību izmantošanu, neizmantojot visas prototipu ķēdes īpašības.

Komentāri (27)

Varat to vienkārši iterēt, piemēram:

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

Ņemiet vērā, ka key nepieņems īpašības vērtību, tā ir tikai indeksa vērtība.

Komentāri (2)
for(key in p) {
  alert( p[key] );
}

Piezīme: to var darīt arī ar masīviem, bet jūs iterēsiet arī garumu un citas īpašības.

Komentāri (5)