Heim  >  Artikel  >  Web-Frontend  >  Instanzen des Durchlaufens der Eigenschaften und Werte von Objekten in js

Instanzen des Durchlaufens der Eigenschaften und Werte von Objekten in js

高洛峰
高洛峰Original
2016-12-06 13:16:161087Durchsuche

Bei der heutigen Optimierung des Projekts bin ich auf die Notwendigkeit gestoßen, „die Eigenschaften und Werte von Objekten in js zu durchlaufen“. Der Grund für diese Anforderung besteht darin, ein js-Plug-in zu erstellen, das den Tabelleninhalt teilweise aktualisiert. Zuerst ging ich online, um ein js-Paging-Plug-in zu erstellen, aber ich war wirklich ungeduldig und konnte es nach langer Zeit nicht mehr herausbringen! Später wurde ich wütend und beschloss, selbst eines zu schreiben. Infolgedessen bin ich auf dieses Problem gestoßen!

Problem: Der Attributwert des Objekts konnte nicht durch Durchlaufen des Attributnamen-Arrays abgerufen werden

Der anfängliche Fehlercode lautet wie folgt:

for(var i=0;i<dataList.length;i++)
{
  var dataLine="<tr>";  
  for(var j=0;j<filedList.length;j++){
    dataLine+="<td>"+dataList[i].filedList[j]+"</td>";
  }
  dataLine+="</tr>";
  $("#"+tableName).append(dataLine);
}

Zunächst enthält dataList ein Array von Objekten; fileList enthält ein Array von Attributfeldnamen von Objekten. Zuerst dachte ich so: Durchlaufe die Datenliste und erhalte jedes Mal ein Objekt, verschachtele dann eine for-Schleife, durchlaufe die Feldliste, erhalte jedes Mal einen ihrer Attributwerte und setze ihn dann zu einer Tabelle zusammen .

Zum Beispiel: dataList[0] ist ein Emp-Objekt und Emp verfügt über Attribute wie ID und Name. Normalerweise können wir den ID-Wert des aktuellen Emp-Objekts über dataList[0].id abrufen. Wenn Sie jedoch das Attributfeld-Array durchlaufen, können Sie dataList[0].filedList[0] nicht auf diese Weise verwenden. Dies bedeutet nicht, dass der Wert nicht in filedList[0] abgerufen wird, da ich bereits über warning(filedList[0]) den ID-Wert 1 erhalten habe. Warum scheitert die Übernahme? Weil es im Emp-Objekt nach einer Eigenschaft namens fileList[0] sucht! Natürlich gibt es im Emp-Objekt kein solches Attribut, daher schlägt die Erfassung fehl, wie sie sollte. Wie erhalten wir also den Attributwert des Objekts?

---------------- ------ -

Lösung: Verwenden Sie zum Durchlaufen die „erweiterte for-Schleife“

Der korrekte Code lautet wie folgt:

for(var i=0;i<dataList.length;i++)
{
  var dataLine="<tr>";  
  for(var filedName in dataList[i]){
    dataLine+="<td>"+dataList[i][filedName]+"</td>";
  }
  dataLine+="</tr>";
  $("#"+tableName).append(dataLine);
}

Lösungsidee: Da dataList[i] ein Objekt ist, kann ich jedes Mal den Attributnamen dieses Objekts abrufen und dann den Attributwert dieses Attributs über dataList[i][filedName] abrufen ist Objekt [Attributname].

Referenz: JS erhält alle Eigenschaften und Methoden eines Objekts

function displayProp(obj){ 
  var names="";   
  for(var name in obj){   
    names+=name+": "+obj[name]+", ";
  }
  alert(names);
}

Aus dieser Sicht ist die Funktion von js immer noch sehr kraftvoll!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn