我想为 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"
});
基于 this useful discussion ,我尝试了一个 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”获取值“1”,我希望为数据“aTargets”获取值 [running_index_number]。
请协助我处理此事。提前谢谢你。
最佳答案
我建议您从 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 对象文字和数组文字语法,但它们不是一回事。)
关于javascript - 为 DataTables aoColumnDefs 创建 JavaScript 数组(JSON 格式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12311420/