
目的
以下の様なCSVから2次元配列を作成後(サンプル1)、結果テーブルに組み込むために整形した2次元配列を生成したい。
CSVサンプル
lang
1Date,Category,A,B,C 22015/02,AAA,a,b,c 32015/02,BBB,d,e,f 42015/03,CCC,g,h,i 52015/03,BBB,j,k,l 62015/03,AAA,m,n,o
サンプル1
lang
1var csvArray = [ //サンプルのため値へのクォートは省略 2 [2015/02,AAA,a,b,c], 3 [2015/02,BBB,d,e,f], 4 [2015/03,CCC,g,h,i], 5 [2015/03,AAA,j,k,l] 6];
結果テーブル
lang
1Table AAA Table BBB Table CCC 2| |2015/02|2015/03| | |2015/02|2015/03| | |2015/02|2015/03| 3|:--|-------|------:| |:--|-------|------:| |:--|-------|------:| 4| A | a | j | | A | d | | | A | | g | 5| B | b | k | | B | e | | | B | | h | 6| C | c | l | | C | f | | | C | | i |
生成したい配列サンプル
lang
1var table = [ 2 [AAA,a,j,b,k,c,l], 3 [BBB,d,'',e,'',f,''], 4 [CCC,'',g,'',h,'',i] 5]; 6 7//オブジェクトでも構わない 8var table = { 9 'AAA':[a,j,b,k,c,l], 10 'BBB':[d,'',e,'',f,''], 11 'CCC':['',g,'',h,'',i] 12};
前提条件
- Javascript(jQuery等不可)使用
- 配列の1次元目は行方向、2次元目は列方向とし、2次元目の長さはすべて同じ
- データがないセルは空白('')とする
- Categoryごとにテーブル(配列)をまとめる
- 行列変換用の関数はmatrix(array)として定義されているものとする
(利用の有無は問わないが利用を前提とする)
6. tableの結果テーブル整形処理は実装済みとする
ピボットテーブル生成という表現が正しいかどうかは別としまして、
csvArrayから各テーブルにセットするための値をまとめたtableを生成するまでのロジックについて、
皆様のお知恵をお借りしたいと思っております。
サンプル通りの配列生成にこだわっているわけではございませんので、よろしくお願い致します。
補足
既に定義(実装)済みのmatrix関数は汎用化設計をしているという前提です。
単純に2次元配列を投げると行列変換された新しい2次元配列として返ってくるというものです。
要するにcsvArrayをtableに変換する過程において、必要ならばユーティリティーツールとしてご利用ください、といった感じです。
処理過程を文書にすると以下の様になります。
- CSVから配列Aを生成
- 配列Aを結果テーブル生成用に整形する(配列B)
- 配列Bを結果テーブルとして整形
1、3の前後の処理ありきで、中間部分の2のロジックを求めています。
全体の構造は以下のようになっていると考えてください。
構造サンプル
lang
1var csvArray = csvToArray(csv); 2/* ココカラ */ 3 4csvArrayをtableに変換する過程のロジックを求めています。 5 6/* ココマデ */ 7 8// 以降、tableを結果テーブルに整形処理(実装済み) 9 10function csvToArray(csv){ 11 処理 12 return array;//2次元配列を返す 13} 14function matrix(array){ 15 処理 16 return newArray;//行列変換後の新しい2次元配列を返す 17}

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/05/13 11:55