1

たとえば、次の Json オブジェクトを使用します。

var x = $.parseJSON("[{\"name\":\"bob\",\"age\":\"23\"},{\"name\":\"mary\",\" age\":\"30\"}]");

(すべて気にして\"ください。一重引用符の使用は好きではありません。どうぞ、私を訴えてください。)

最終的に目指しているのは、Json オブジェクトのデータと構造に基づいて動的に生成された HTML テーブルです (多くの WebForms グリッドの AutoGenerateColumns プロパティを考えてみてください)。ヘッダーを作成するには、各メンバーを繰り返し処理し、メンバー名を使用してヘッダー列を作成します。このように、WebMethod 呼び出しで SQL に列を追加または削除するだけで、テーブルが自動的に更新されます。

解決

このJSはトリックを行います:

        var x = $.parseJSON("[{\"name\":\"bob\",\"age\":\"23\"},{\"name\":\"mary\",\"age\":\"30\"}]");

        $.each(x, (function (key, value) {
            $.each(x[key], function (key2, value2) {
                alert(key2 + " " + x[key][key2]);
            });
        }));

私は JS でループ処理を行ったことがあまりないので、1 つのことが重要でした。.NET では、foreachループはコレクション内のオブジェクトを反復処理します。JS ではfor、インデックスを反復処理するため、なぜx[key][key2].

4

2 に答える 2

1

jQuery$.eachはそれを行うことができ、ネイティブの JavaScript "foreach" (別名for...in) も同様に行うことができます。どちらも、オブジェクトのキーを反復処理する機能を提供します。したがって、あなたの例では:

var columns = []; // column holder
// grab first element (assuming they all have the same columns)
var first = x[0];
// iterative over eahc property and add it to our columns list
for (var key in first){
  columns.push(key);
}

現在、列には があり['name','age']ます。

于 2013-05-31T18:08:33.170 に答える
0
var x = $.parseJSON("[{\"name\":\"bob\",\"age\":\"23\"},{\"name\":\"mary\",\"age\":\"30\"}]");

for (var prop in x) {
  if (x.hasOwnProperty(prop) {
    ..
  }
}

そこで特筆すべきはそのhasOwnProperty方法です。xこのメソッドは、それが直接由来するプロパティであるか、または派生するオブジェクトx( など) からのプロパティであるかを確認しますObject

于 2013-06-03T12:41:29.463 に答える