javascriptで以下の配列があります。

result_array = [{"status":{"A1":{"1":{"test1":"111","test2":"*9999","test3":"99","test4":"124"}},"B1":{"1":{"test1":"2222","test2":"koko","test3":"10","test4":"69"}}}}]
という配列があってこれを
<table boder=1>
<tr>
<td>test1</td><td>test2</td><td>test3</td><td>test4</td>
<tr>
</tr>
<td>111</td><td>*9999</td><td>99</td><td>124</td>
<tr>
</tr>
<td>2222</td><td>koko</td><td>10</td><td>69</td>
<tr>
</tr>
</table>
という形にするにはどうしたらいいのでしょうか?
対象ブラウザはIE、FIREFOXです。

回答の条件
  • 1人10回まで
  • 登録:2007/05/30 16:02:50
  • 終了:2007/05/30 17:41:15

回答(1件)

id:openseed No.1

openseed回答回数51ベストアンサー獲得回数62007/05/30 16:42:24

ポイント60pt

とりあえず、必要な値だけで取得して作成してみました。

IE6,FF2 for win で確認していますが、なんら保障するものではありません・・・。

JSON オブジェクトをテーブルを表示するのに分かりやすいデータ構造に変更して、出力するのが分かりやすいと思います。

<script>
var result_array = [{"status":{"A1":{"1":{"test1":"111","test2":"*9999","test3":"99","test4":"124"}},"B1":{"1":{"test1":"2222","test2":"koko","test3":"10","test4":"69"}}}}];


var headers = {};
var lines = new Array();
for(var i=0;i<result_array.length;i++){
    var m1 = result_array[i];
    for(var status in m1){
        var m2 = m1[status];
        for(var cell in m2){
            var m3 = m2[cell];
            for(var no in m3){
                var m4 = m3[no];
                lines.push(m4);
                for(var header in m4){
                    headers[header] = true;
                }
            }
        }
    }
}

var strTable = "";
var strHeader = "";
var strRows = "";

for(var header in headers){
    strHeader += "<td>" + header + "</td>";
}
strHeader = "<tr>\n" + strHeader + "\n</tr>\n";
for(var i=0;i<lines.length;i++){
    var strRow = "";
    for(var header in headers){
        strRow += "<td>" + lines[i][header] + "</td>";
    }
    strRows += "<tr>\n" + strRow + "\n</tr>\n";
}

strTable = '<table border="1">\n' + strHeader + strRows + '</table>';

document.write(strTable);
alert(strTable);

</script>

id:hopefully

出来ましたw

ありがとうございますw

2007/05/30 17:19:16
  • id:openseed
    2行目を、

    現在:
    var result_array = [{"status":{"A1":{"1":{"test1":"111","test2":"*9999","test3":"99","test4":"124"}},"B1":{"1":{"test1":"2222","test2":"koko","test3":"10","test4":"69"}}}}];


    変更後:
    var result_array = [{"A1":{"1":{"test1":"111","test2":"*9999","test3":"99","test4":"124"}},"B1":{"1":{"test1":"2222","test2":"koko","test3":"10","test4":"69"}}}];
    result_array[0] = {"status": result_array[0]};

    ではダメですか?
  • id:openseed
    または、5行目からのfor文を

    for(var i=0;i<result_array.length;i++){
    var m2 = result_array[i];
    for(var cell in m2){
    var m3 = m2[cell];
    for(var no in m3){
    var m4 = m3[no];
    lines.push(m4);
    for(var header in m4){
    headers[header] = true;
    }
    }
    }
    }

    ※ コメント欄に、半角スペースを記入するには・・・&nbsp; ではダメなんですね。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません