630 Stimmen

Wie kann man über ein JavaScript-Objekt iterieren?

Ich habe ein Objekt in JavaScript:

{
    abc: '...',
    bca: '...',
    zzz: '...',
    xxx: '...',
    ccc: '...',
    // ...
}

Ich möchte eine for Schleife, um seine Eigenschaften zu erhalten. Und ich möchte es in Teilen (nicht alle Objekteigenschaften auf einmal) zu wiederholen.

Bei einem einfachen Array kann ich das mit einer Standard for Schleife:

for (i = 0; i < 100; i++) { ... } // first part
for (i = 100; i < 300; i++) { ... } // second
for (i = 300; i < arr.length; i++) { ... } // last

Aber wie macht man das mit Objekten?

8voto

Cerbrus Punkte 65121

Der einzige zuverlässige Weg, dies zu tun, wäre, Ihre Objektdaten in 2 Arrays zu speichern, eines für die Schlüssel und eines für die Daten:

var keys = [];
var data = [];
for (var key in obj) {
    if (obj.hasOwnProperty(key)) {
        keys.push(key);
        data.push(obj[key]); // Not necessary, but cleaner, in my opinion. See the example below.
    }
}

Sie können dann wie gewohnt über die Arrays iterieren:

for(var i = 0; i < 100; i++){
    console.log(keys[i], data[i]);
    //or
    console.log(keys[i], obj[keys[i]]); // harder to read, I think.
}
for(var i = 100; i < 300; i++){
    console.log(keys[i], data[i]);
}

Ich benutze nicht Object.keys(obj) denn das ist der IE 9+.

5voto

ashishdudhat Punkte 180

->Wenn wir über ein JavaScript-Objekt iterieren und den Schlüssel finden Objekten

Object.keys(Array).forEach(key => {

 console.log('key',key)

})

3voto

liquid Punkte 10157

Objekt in Argumenten definieren und Selektoren und Subscripte vermeiden

Es gibt eine Reihe von Syntaxoptionen, aber diese definiert das Objekt im Voraus in den Argumenten der Schließung, wodurch die Notwendigkeit für Selektoren oder Subscripts im Iterator entfällt. k ist der Schlüssel, v Wert ist, i ist Index.

const obj = {
    kiwi: true,
    mango: false,
    pineapple: 500
};

Object.entries(obj).forEach(([k, v], i) => {
    console.log(k, v, i);
});

// kiwi true 0
// mango false 1
// pineapple 500 2

3voto

Hadi Mir Punkte 3239

Wenn Sie ein einfaches Objekt haben, können Sie es mit folgendem Code durchlaufen:

let myObj = {
  abc: '...',
  bca: '...',
  zzz: '...',
  xxx: '...',
  ccc: '...',
  // ...
};

let objKeys = Object.keys(myObj);

//Now we can use objKeys to iterate over myObj

for (item of objKeys) {
  //this will print out the keys
  console.log('key:', item);

  //this will print out the values 
  console.log('value:', myObj[item]);
}

Wenn Sie ein verschachteltes Objekt haben, können Sie es mit folgendem Code durchlaufen:

let b = {
  one: {
    a: 1,
    b: 2,
    c: 3
  },
  two: {
    a: 4,
    b: 5,
    c: 6
  },
  three: {
    a: 7,
    b: 8,
    c: 9
  }
};

let myKeys = Object.keys(b);

for (item of myKeys) {
  //print the key
  console.log('Key', item)

  //print the value (which will be another object)
  console.log('Value', b[item])

  //print the nested value
  console.log('Nested value', b[item]['a'])
}

Wenn Sie ein Array von Objekten haben, können Sie es mit folgendem Code durchlaufen:

let c = [
{
  a: 1,
  b: 2
},
{
  a: 3,
  b: 4
}
];

for(item of c){
//print the whole object individually 
console.log('object', item);

//print the value inside the object
console.log('value', item['a']);
}

2voto

Vishal Punkte 18723
const o = {
  name: "Max",
  location: "London"
};

for (const [key, value] of Object.entries(o)) {
  console.log(`${key}: ${value}`);
}

Online ausprobieren

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X