Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.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
Javascript 基于数组使DataTables列变为变量_Javascript_Arrays_Datatables - Fatal编程技术网

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,这很奇怪。你能在我可以看到代码的地方制作一个代码片段吗?很抱歉,我在制作我看到的代码片段时,我使用了一个双函数。现在它可以工作了,谢谢。