创建数据表aoColumnDefs JavaScript数组(JSON格式)(Create Java

2019-10-17 04:49发布

我想创建一个数据表参数aoColumnDefs以下JSON数据:

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

然后,我会把变量变成像下面的我的数据表变量声明:

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

基于这种有益的讨论 ,我已经尝试了JavaScript的循环来创建JSON数据aryJSONColTable如下:

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

我总是得到的值“ 1 ”从以上的JavaScript回路数据“aTargets”,这是我希望得到的值[running_index_number]数据“aTargets”。

敬请协助我在这个问题上。 先感谢您。

Answer 1:

我建议你从一个改变for..in循环来一个标准for循环,因为遍历一个数组for..in如果您正在使用,增加了属性/方法的一个库在“危险” Array.prototype然后循环将遍历这些呢。

另外, for..in迭代器i将是一个字符串创建"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对象文本和数组文字语法,但它是不一样的东西。)



Answer 2:

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


文章来源: Create JavaScript array (JSON format) for DataTables aoColumnDefs