3599 Stimmen

Wie kann ich ein JavaScript-Objekt in einer Schleife durchlaufen oder aufzählen?

Ich habe ein JavaScript-Objekt wie das folgende:

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

Jetzt möchte ich eine Schleife durch alle p Elemente ( p1 , p2 , p3 ...) und ihre Schlüssel und Werte erhalten. Wie kann ich das tun?

Ich kann das JavaScript-Objekt bei Bedarf ändern. Mein ultimatives Ziel ist es, eine Schleife durch einige Schlüssel-Wert-Paare zu ziehen, und wenn möglich, möchte ich die Verwendung von eval .

6voto

senthil Punkte 305
    var p =[{"username":"ordermanageadmin","user_id":"2","resource_id":"Magento_Sales::actions"},
{"username":"ordermanageadmin_1","user_id":"3","resource_id":"Magento_Sales::actions"}]
for(var value in p) {
    for (var key in value) {
        if (p.hasOwnProperty(key)) {
            console.log(key + " -> " + p[key]);
        }
    }
}

0 Stimmen

json = [{"key1":"value1","key2":"value2"},{"key1":"value3","key2":"‌​value4"}] for (var i = 0; i < json.length; i++) { for (var key in json[i]) { if (json[i].hasOwnProperty(key)) { console.log(key + " -> " + json[i][key]); } } }

6voto

Lewis Punkte 13035

Ich würde dies tun, anstatt zu prüfen obj.hasOwnerProperty in jedem for ... in Schleife.

var obj = {a : 1};
for(var key in obj){
    //obj.hasOwnProperty(key) is not needed.
    console.log(key);
}
//then check if anybody has messed the native object. Put this code at the end of the page.
for(var key in Object){
    throw new Error("Please don't extend the native object");
}

5voto

Dheeraj Vepakomma Punkte 19844

Wenn Sie eine Iteration über nicht-aufzählbare Eigenschaften können Sie auch Object.getOwnPropertyNames(obj) um ein Array aller Eigenschaften (aufzählbar oder nicht) zurückzugeben, die direkt bei einem bestimmten Objekt gefunden wurden.

var obj = Object.create({}, {
  // non-enumerable property
  getFoo: {
    value: function() { return this.foo; },
    enumerable: false
  }
});

obj.foo = 1; // enumerable property

Object.getOwnPropertyNames(obj).forEach(function (name) {
  document.write(name + ': ' + obj[name] + '<br/>');
});

2 Stimmen

Das ist fantastisch, ich danke Ihnen für die Veröffentlichung dieser Antwort. Ich musste mich selbst prüfen und Error Objekt und konnte nicht auf die Eigenschaften in einer Schleife oder einem _.forIn(err) anrufen. Verwendung von Object.getOwnPropertyNames(err) ermöglichte mir den Zugang zu allen Teilen des Error die ich vorher nicht erreichen konnte. Danke!

4voto

nrb Punkte 182

Object.entries() Funktion:

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

for (var i in Object.entries(p)){
    var key = Object.entries(p)[i][0];
    var value = Object.entries(p)[i][1];
    console.log('key['+i+']='+key+' '+'value['+i+']='+value);
}

0 Stimmen

Bitte entfernen Sie das Snippet nicht, wenn Sie meinen Eintrag bearbeiten

0 Stimmen

Zur Leistungssteigerung verwenden var e=Object.entries(p) und Veränderung Object.entries(p) a e überall

2voto

PythonProgrammi Punkte 20089

So können Sie ein Javascript-Objekt in einer Schleife durchlaufen und die Daten in eine Tabelle eingeben.

<body>
<script>
function createTable(objectArray, fields, fieldTitles) {
  let body = document.getElementsByTagName('body')[0];
  let tbl = document.createElement('table');
  let thead = document.createElement('thead');
  let thr = document.createElement('tr');

  for (p in objectArray[0]){
    let th = document.createElement('th');
    th.appendChild(document.createTextNode(p));
    thr.appendChild(th);

  }

  thead.appendChild(thr);
  tbl.appendChild(thead);

  let tbdy = document.createElement('tbody');
  let tr = document.createElement('tr');
  objectArray.forEach((object) => {
    let n = 0;
    let tr = document.createElement('tr');
    for (p in objectArray[0]){
      var td = document.createElement('td');
      td.appendChild(document.createTextNode(object[p]));
      tr.appendChild(td);
      n++;
    };
    tbdy.appendChild(tr);    
  });
  tbl.appendChild(tbdy);
  body.appendChild(tbl)
  return tbl;
}

createTable([
              {name: 'Banana', price: '3.04'}, // k[0]
              {name: 'Orange', price: '2.56'},  // k[1]
              {name: 'Apple', price: '1.45'}
           ])
</script>

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