Javascript 基于数组使DataTables列变为变量
背景:Javascript 基于数组使DataTables列变为变量,javascript,arrays,datatables,Javascript,Arrays,Datatables,背景: 我正忙于构建一个应用程序,它(除其他外)必须能够显示报告。我之所以选择DataTables,是因为它工作出色,易于实现。我制作了一个基于一个(静态)数据集的应用程序。但是,我收到了修改应用程序以能够处理多个数据集的请求 问题: 除此之外,我还想用一个变量替换静态定义的列(请参见代码段)。在本例中,是一个具有id、keten、name、x、y的数组,该数组将在其他地方动态声明 如何更改函数以合并变量数组而不是硬编码列 最终结果应该从 "columns": [ {"data": "i
我正忙于构建一个应用程序,它(除其他外)必须能够显示报告。我之所以选择DataTables,是因为它工作出色,易于实现。我制作了一个基于一个(静态)数据集的应用程序。但是,我收到了修改应用程序以能够处理多个数据集的请求 问题:
除此之外,我还想用一个变量替换静态定义的列(请参见代码段)。在本例中,是一个具有
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()
};
您可以使用
.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()
}
您可以使用
.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()
}
您可以使用javascript
.map()
函数:
它将根据需要将数组元素转换为对象
var arr = [id, keten, name, x, y];
var objArr = arr.map(function(item) { return {data:item} });
控制台日志(objArr)
然后,您可以在datatable函数中直接使用它。谢谢您可以使用javascript
.map()
函数:
它将根据需要将数组元素转换为对象
var arr = [id, keten, name, x, y];
var objArr = arr.map(function(item) { return {data:item} });
控制台日志(objArr)
然后,您可以在datatable函数中直接使用它。谢谢我一直在修改代码,但结果不是100%正确。虽然它为我的报告返回了正确的记录数,但所有记录都是[object object]@JordiZ您正在输出到控制台吗?在输出时尝试使用
JSON.stringify(obj)
。当我使用console.log(inputArray)时,控制台显示一个对象。当我控制台.log(JSON.stringify(inputArray)时,结果是:[{“data”:“id”},{“data”:“x”},{“data”:“y”},{“data”:“keten”},{“data”:“name”}]
,我认为这很好。但是,当我试图将其合并到我的数据表中时,它会给出一个空报告。错误消息:“TypeError:invalid'in'operane”@JordiZ嗯,这很奇怪。你能在我可以看到代码的地方制作一个片段吗?很抱歉,在制作我看到的片段时,我使用了一个双函数。现在它可以工作了,谢谢。我已经对代码进行了一些修改,但结果不是100%正确。虽然它为我的报告返回了正确的记录数,但所有记录都是正确的[object object]@JordiZ您正在向控制台输出吗?在输出时尝试使用JSON.stringify(obj)
。当I console.log(inputArray)时,控制台显示一个对象。当I console.log(JSON.stringify(inputArray)时,结果是:[{“data”:“id”},{“data”:“x”},{“data”:“y”},{“data”:“data”:“keten”},{“data”:“name”}]
,我认为这很好。但是,当我试图将它合并到我的数据表中时,它给出了一个空报告。错误消息:“TypeError:invalid'in'operand e”@JordiZ-Hmm,这很奇怪。你能在我可以看到代码的地方制作一个代码片段吗?很抱歉,我在制作我看到的代码片段时,我使用了一个双函数。现在它可以工作了,谢谢。