背景
我正在忙着建立一个应用程序(其中包括)必须能够显示报告。我之所以选择DataTables是因为它的工作非常棒而且很容易实现。我已经创建了一个基于一个(静态)数据集的应用程序。但是,我已经请求更改应用程序以便能够使用多个数据集。
问题:
Amonst其他的东西,我想用变量替换静态定义的列(请参阅代码片段)。在这种情况下,一个带有id, keten, name, x, y
的数组,将在其他地方动态声明。
如何更改我的函数以合并变量数组而不是硬编码列?
最终结果应该从
改变"columns": [
{"data": "id"},
{"data": "keten"},
.......
类似
"columns": [
{"data": *variableReportData*}
代码:
function rapport_vullen(){
$("#rapport").dataTable({
destroy: true,
"aaData": geojson.features.map(function(row) { return row.properties; }),
"columns": [
{"data": "id"},
{"data": "keten"},
{"data": "name"},
{"data": "x"},
{"data": "y"}
]
});
download_rapport()
};
答案 0 :(得分:1)
您可以使用.map()
将列名数组转换为对象数组,如下所示:
var inputArray = ["a","b","c"]; // for example
inputArray.map(function(d) { return {data:d}; });
所以I / O将是:
["a","b","c"] --> [{data:"a"},{data:"b"},{data:"c"}]
然后使用输出创建DataTable。
function rapport_vullen(inputArray){
$("#rapport").dataTable({
destroy: true,
aaData: geojson.features.map(function(row) { return row.properties; }),
columns: inputArray.map(function(d) { return {data:d}; })
});
download_rapport()
}
答案 1 :(得分:1)
您可以使用javascript .map()
功能:
它会根据需要将数组元素转换为对象。
var arr = [id, keten, name, x, y];
var objArr = arr.map(function(item) { return {data:item} });
的console.log(objArr);
[{"data": "id"},
{"data": "keten"},
{"data": "name"},
{"data": "x"},
{"data": "y"}]
然后,您可以直接在数据表函数中使用它。感谢