4

私はこのコードを持っています:

loadData : function(jsonArray) {
var id = $(this).attr("id");

for(var i in jsonArray) {
    $("#"+id+" tbody").append('<tr class="entry-details page-1 entry-visible" id="entry-'+i+'"></tr>');

    var header = {
        1: "time",
        2: "project",
        3: "task"
    }
    var col = 1;
    while(col <= jsonArray[i].length) {
        $("#"+id+" tbody #entry-"+i).append("<td>"+jsonArray[i][header[col]]+"</td>")
        col++
}}

次のような JSON 配列を使用します。

{"1":{"project":"RobinsonMurphy","task":"Changing blog templates","time":"18\/07\/11 04:32PM"},"2":{"project":"Charli...

コードは行をループし (実際に実行します)、データの列をループします。

私が直面している問題は、列データを正しい列に配置するために、行に返されるデータの数を計算する必要があることです。jsonArray[i].length を試しましたが、これは undefined を返します。

どんな助けでもいただければ幸いです

4

5 に答える 5

4

オブジェクトだけで、配列はまったくありません。

オブジェクト内の項目を数えるには、単純な関数を作成します。

function countInObject(obj) {
    var count = 0;
    // iterate over properties, increment if a non-prototype property
    for(var key in obj) if(obj.hasOwnProperty(key)) count++;
    return count;
}

これで、 を呼び出すことができますcountInObject(jsonArray[i])

于 2011-07-26T11:40:48.470 に答える
2

このような:

Object.size = function(obj) {
    var size = 0, key;
    for (key in obj) {
        if (obj.hasOwnProperty(key)) size++;
    }
    return size;
};

// Get the size of an object
var size = Object.size(myArray);

JavaScript オブジェクトの長さ

于 2011-07-26T11:42:05.513 に答える
0

そのフィドルを見てください: http://jsfiddle.net/Christophe/QFHC8/

キーは

for (var j in jsonArray[i]) {

それ以外の

while (col <= jsonArray[i].length) {
于 2011-07-26T11:42:09.783 に答える
0

jsonArray[i].length は機能しません。jsonArray[i] は配列ではなく辞書であるためです。次のようなものを試してください:

for(var key in jsonArray[i]) {
     jsonArray[i][key]
}
于 2011-07-26T11:43:31.597 に答える