为DataTables aoColumnDefs创建JavaScript数组(JSON格式)
我想为DataTables参数aoColumnDefs创建以下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"
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;-)