ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript がオブジェクトの属性値をトラバースする方法の詳細なコードの説明

JavaScript がオブジェクトの属性値をトラバースする方法の詳細なコードの説明

伊谢尔伦
伊谢尔伦オリジナル
2017-07-21 13:07:151727ブラウズ

「js内のオブジェクトのプロパティと値をトラバースする」必要性について。その理由は、テーブルのコンテンツを部分的に更新する js プラグインを作成するためです。

問題: 属性名配列の走査によるオブジェクトの属性値の取得に失敗しました

冒頭のエラーコードは以下の通りです:


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

まず、オブジェクト配列は以下に配置されます。 dataList; オブジェクト配列は filedList に配置されます。 オブジェクトの属性フィールド名の配列です。最初は次のように考えて、dataList を走査して毎回オブジェクトを取得し、次に for ループをネストして filedList を走査し、毎回その属性値の 1 つを取得して、それをテーブルにつなぎ合わせます。 。

例: dataList[0] は Emp オブジェクトであり、Emp には id や name などの属性があります。通常、現在の Emp オブジェクトの ID 値は dataList[0].id を通じて取得できます。ただし、属性フィールド配列をトラバースする場合は、この方法で dataList[0].filedList[0] を使用することはできません。これは、filedList[0] で値が取得されていないという意味ではありません。alert(filedList[0]) を通じて id 値 1 を既に取得しているためです。では、なぜ買収は失敗するのでしょうか?それは、Emp オブジェクトで filedList[0] というプロパティを探しているからです。もちろん、Emp オブジェクトにはそのような属性は存在しないため、取得は正常に失敗します。では、オブジェクトの属性値を取得するにはどうすればよいでしょうか。

解決策: 「拡張 for ループ」を使用してトラバースします

正しいコードは次のとおりです:


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

解決策: dataList[i] はオブジェクトなので、毎回このオブジェクトの属性を取得できますname を取得し、dataList[i][filedName] を通じてこの属性の属性値、つまりオブジェクト [属性名] を取得します。


りー

以上がJavaScript がオブジェクトの属性値をトラバースする方法の詳細なコードの説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。