1

DataTables パラメーター aoColumnDefs の次の JSON データを作成したいと思います。

var aryJSONColTable = [
                        {"sTitle": "Column00", "aTargets": [0]},
                        {"sTitle": "Column01", "aTargets": [1]},
                        {"sTitle": "Column02", "aTargets": [2]},
                        {"sTitle": "Column03", "aTargets": [3]}
                      ]

次に、変数を次のように DataTable 変数宣言に入れます。

var oTable = $('#report').dataTable({
                                "aoColumnDefs": aryJSONColTable,
                                "bProcessing": true,
                                "bServerSide": true,
                                "bLengthChange": true,
                                "bFilter": true,
                                "aaSorting": [[ 3, "desc" ]],
                                "sScrollX": "100%",
                                "bScrollCollapse": true,
                                "bJQueryUI": true,
                                "sAjaxSource": "./getDataEA.php"
                            });

この有用な議論に基づいて、次のように JSON データ aryJSONColTable を作成する JavaScript ループを試しました。

//create JSON array for aoColumnDefs
var aryColTableChecked = ["column00", "column01", "column02", "column03"];
var aryJSONColTable = [];

for (var i in aryColTableChecked) {
    aryJSONColTable.push({
                      "sTitle": aryColTableChecked[i],
                      "aTargets": [i]
                    });
};

データ「aTargets」の値 [running_index_number] を取得したい JavaScript ループから、常にデータ「aTargets」の値「1 」を取得します。

この件についてご協力をお願いします。前もって感謝します。

4

2 に答える 2

1

プロパティ/メソッドをに追加するライブラリを使用している場合、ループもそれらを反復するという点で、配列を反復することは「危険」であるため、for..inループから標準ループに変更することをお勧めします。forfor..inArray.prototype

また、イテレータfor..ini使用すると、作成する文字列になり、作成する"aTargets" : ["0"]数値にする必要があります"aTargets" : [0]

var aryColTableChecked = ["column00", "column01", "column02", "column03"];
var aryJSONColTable = [];

for (var i = 0; i <  aryColTableChecked.length; i++) {
    aryJSONColTable.push({
                      "sTitle": aryColTableChecked[i],
                      "aTargets": [i]
                    });
};

うまくいくようです:http://jsfiddle.net/nnnnnn/Ek8tr/

注: 作成しているのは JSONではなく、オブジェクトの配列です。(JSON は常に文字列であるデータ交換形式です。JSON は JS オブジェクト リテラルと配列リテラルの構文のように見えますが、同じものではありません。)

于 2012-09-07T03:54:13.833 に答える
1

for...in配列ではなくオブジェクト用でaryColTableCheckedあり、配列です。次のように実行できます。

var arr = [];
var max = 3; // zero based
for (var i = 0, n; i <= max; i++) {
    n = i > 9 ? '' + i : '0' + i; // make sure it has 2 digits
    arr.push({
        sTitle: 'Column' + n,
        aTargets: [i] // why array here?            
    });
}
于 2012-09-07T03:50:23.470 に答える