Home >Web Front-end >JS Tutorial >Detailed code explanation of how javascript traverses the attribute values ​​of an object

Detailed code explanation of how javascript traverses the attribute values ​​of an object

伊谢尔伦
伊谢尔伦Original
2017-07-21 13:07:151730browse

Regarding the need for "traversing the properties and values ​​of objects in js". The reason is to make a js plug-in that partially refreshes the table content.

Problem: Failed to obtain the attribute value of the object by traversing the attribute name array

The initial error code is as follows:


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

First of all, dataList contains an array of objects; filedList contains an array of attribute field names of objects. At first, I thought like this, traverse the dataList, and get an object every time, then nest a for loop, traverse the filedList, get one of its attribute values ​​​​each time, and then piece it together into a table.

For example: dataList[0] is an Emp object, and Emp has attributes such as id and name. Normally we can get the id value of the current Emp object through dataList[0].id. But if you traverse the attribute field array, you cannot use dataList[0].filedList[0] in this way. This does not mean that the value is not obtained in filedList[0], because I have already obtained the id value of 1 through alert(filedList[0]). So why does the acquisition fail? Because it is looking for a property called filedList[0] in the Emp object! Of course there is no such attribute in the Emp object, so the acquisition fails as it should. So how do we obtain the attribute value of the object?

Solution: Use "enhanced for loop" to traverse

The correct code is as follows:


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

Solution: Since dataList[i] is an object, so I can get the attribute name of this object every time, and then get the attribute value of this attribute through dataList[i][filedName], that is, object [attribute name].


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

The above is the detailed content of Detailed code explanation of how javascript traverses the attribute values ​​of an object. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn