Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为DataTables aoColumnDefs创建JavaScript数组(JSON格式)_Javascript_Json_Datatables - Fatal编程技术网

为DataTables aoColumnDefs创建JavaScript数组(JSON格式)

为DataTables aoColumnDefs创建JavaScript数组(JSON格式),javascript,json,datatables,Javascript,Json,Datatables,我想为DataTables参数aoColumnDefs创建以下JSON数据: var aryJSONColTable = [ {"sTitle": "Column00", "aTargets": [0]}, {"sTitle": "Column01", "aTargets": [1]}, {"sTitle": "Column02", "aTargets"

我想为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"
                            });
基于,我尝试使用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]
                    });
};
我总是从上面的JavaScript循环中为数据“aTargets”获取值“”,我希望为数据“aTargets”获取值[running_index_number]


请在这件事上帮助我。提前感谢。

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?            
    });
}
var arr=[];
var max=3;//零基
for(vari=0,n;i9?“”+i:'0'+i;//确保它有两个数字
arr.push({
针:'列'+n,
aTargets:[i]//为什么在这里使用数组?
});
}

我建议您将
for..in
循环更改为标准的
for
循环,因为使用
for..in
迭代数组是“危险的”,因为如果您使用的库向
数组.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]
                    });
};
var aryColTableChecked=[“column00”、“column01”、“column02”、“column03”];
var aryJSONColTable=[];
对于(var i=0;i
似乎效果不错:


注意:您正在生成的是而不是JSON,它是一个对象数组。(JSON是一种数据交换格式,总是一个字符串。JSON看起来像JS对象文字和数组文字语法,但它不是一回事。)

工作表单。为什么你认为这些数组的第一个值总是
1
?这是不是在你想要的输出中有
Column02
两次输入错误?是的,nnnnn,你有敏锐的眼睛:-)我已经编辑到Column03了。谢谢你的评论。+1:我认为“为什么在这里使用数组?”是真正的问题。我想你要么想要
max=4
要么
I Cool。另一件事:我刚刚注意到您使用了
I.length
-当
I
是一个数字时,这是否有效?(即为
i.length
给了我
undefined
,所以我会使用
i>9
)在Chrome中对我有效,但我会按照@bergi的建议做,让你摆弄
max=13
,看看会发生什么
undefined>1
false
。您自己不应该在枚举中使用for,那么:-)但是如果是真的,字符串(一个真实值)可能是这里的问题。@Bergi-Oops-我想我是从我的小提琴上复制了标准的
for
代码,但我一定是从问题中复制的。谢谢固定的。我无法复制OP提到的问题,但是每个元素都有
“1”
。您好,谢谢您的快速回复。我已经尝试了您上面的建议,但我仍然得到数据“aTargets”的值[1]。这个JSON格式是在JQuery DataTables参数aoColumnDefs中指定的,您可以查看这个链接以了解更多详细信息。我无法解释这个结果。您可以在我的jsiddle演示中看到,
aryJSONColTable
以正确的值结束。您在什么时候检查这些值并找到
[1]
?调用
.dataTable()
方法之前还是之后?是的,nnnnnn,你完全正确!现在很好用!以前我使用Firebug监视面板查看数组值,它总是显示数据“aTargets”的值[1],但当深入了解其值时,它实际上会得到[0]、[1],等等。谢谢大家的大力帮助。我还开始学习如何按照您的建议使用JSFIDLE;-)