2016-05-24 35 views
0

背景:
(とりわけ)レポートを表示する必要があるアプリケーションの構築が忙しいです。 DataTableはすごくうまく機能し、実装が簡単だったため、DataTableを選択しました。私は1つの(静的な)データセットに基づいたアプリケーションを作った。しかし、私は複数のデータセットで作業できるようにアプリケーションを変更するよう要求しました。DataTable列を配列に基づいて可変にする

質問:他のもののAmonst
、私は変数で、静的に定義された列を(コードスニペットを参照)を交換したいです。この場合、配列はid, keten, name, x, yであり、他の場所では動的に宣言されます。

列をハードコーディングする代わりに、変数配列を組み込むように関数を変更するにはどうすればよいですか?

最終結果は

"columns": [ 
    {"data": *variableReportData*} 

コードのようなものに

"columns": [ 
    {"data": "id"}, 
    {"data": "keten"}, 
....... 

から変更する必要があります:あなたは配列に列名の配列を変換することができ

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() 
}; 

答えて

1

を使用してオブジェクトの以下のようなはそう:

["a","b","c"] --> [{data:"a"},{data:"b"},{data:"c"}] 

そして出力を使用したDataTableを作成します。

var inputArray = ["a","b","c"]; // for example 
inputArray.map(function(d) { return {data:d}; }); 

だから、I/Oは次のようになります。

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() 
} 
+0

私は少しコードを改造してきましたが、結果は100%正確ではありません。レポートに正しいレコード数が返されますが、すべてのレコードは[オブジェクトオブジェクト] –

+0

@ JordiZコンソールに出力していますか?出力するときに 'JSON.stringify(obj)'を使ってみてください。 – 4castle

+0

console.log(inputArray)を実行すると、コンソールにオブジェクトが表示されます。私がconsole.log(JSON.stringify(inputArray))を実行すると、結果は次のようになります: '' {"data": "id"}、{"data": "x"}、{"data": "y"}、 "data": "keten"}、{"data": "name"}] 'これは私が思っていたものですが、DataTableに組み込むと空のレポートが表示されます。 :無効な 'in'オペランドe " –

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"}] 

次に、これをデータテーブル関数で直接使用できます。ありがとう

関連する問題