HOME

{ CSV データ配列変換ツール : javascript }

{ svg, javascript で作成したプログラム一覧 }

推奨 ブラウザ : chrome

{ CSV データ配列変換ツール }
{ CSV データ }

{ 実行結果 : 行配列 }

{ 実行結果 : 列配列 }

CSV データを Array 配列へ変換します。
var d = CSV.parse(data,','); の第一引数に CSV データ、 第二引数に String で区切り文字指定。 囲み文字は、セル単位で、シングル、ダブルクォーテーションが混在していても処理できると思います。 囲み文字が連続している場合、最初と最後を一つだけ削除します。 囲み文字列前後の半角スペース、タブは、削除します。 囲み文字内であれば、改行が含まれていても、一つのセルの値として取得出来ると思います。 戻り値は、配列です。戻り値の d[0] に行、 d[0] に列の配列です。 以前前回作成した関数と比べて処理に掛かる時間が 1/13, 前回のと比べて 1/2 くらいになりました。 配列を CSV データに変換する、 stringify メソッド、 配列を HTML タグの table へ変換する tableElement メソッド追加しました。



以前に作成した str.getCSVArray('\t') を書き直しました。
以前のは、文字を一文字づつ読んで、正規表現を多用して処理していたのですが、
今回のは、正規表現をなるべく使わないようにして、
代わりに、 indexOf(), substring() メソッドを使用してみました。
また、返り値が横の配列だけだったので、
今回のは、縦の配列も返すようにしました。
これは、正規表現で、テキストに色を付けるツールを作成したのですが、
横に並んでいる配列に、縦の値を追加するのに、手こずったからです。
これ → { テキスト内指定文字列へ CSS クラス名一括指定ツール }
なので、返り値は配列になります。
返り値の [1], に行(横)配列、[2], に列(縦)配列 です。
使用方法は、以前と同じだと思います

この関数と前の関数で、1.52 Mb (文字数 : 1116303 文字)の CSV データを処理してみた所、
今回のが、 277 ms, 前のが、 1614 ms でした。
正確な測定方法は分からないのですが、この数字だけを比べると、
処理時間が 1/7 くらいになったようです。(*'ω' *)

再書き直ししました。
関数を使ってループ処理していたところを、 While 処理に書き直しました。
あと、 javascript 高速化!で検索して、色々書き込んでいます。
良く分からないので、無駄に書き込んでいる所が多々あると思います。
以前テストした CSV ファイルを読み込んでみた所、
処理時間が一つ前のとでは、 100ms くらい処理時間が短くなり、
一番最初に書いたのと比べると、 1/13 くらいの時間で処理できるようになりました。

エスケープ処理の事忘れてました。
処理書き足したらコードが余計にぐちゃぐちゃに。。。ヽ(´ー`)ノ

再々書き直ししました。
再々チャレンジ!
僅かですが処理時間が短くなりました。

CSV データを配列へ変換する関数を
String の prototype として登録していましたが、 Object 化しました。
配列を CSV データに変換する、 stringify メソッド、
配列を HTML タグの table へ変換する tableElement メソッド追加しました。

再再再書き直ししました。
正規表現での処理をやめて、処時間短縮を狙ったのですが、
以前のより、処理時間が長くなってしまうという結果になってしまいました。
一文字づつ読み込んで処理するより、 substring で文字列を取得して処理したほうが、
効率がいいみたいです。

CSV オブジェクト 再再再書き直し後の処理時間 : ブラウザは chrome

CSV オブジェクト 再再再書き直し後の処理時間

CSV オブジェクト 再再書き直し後の処理時間 : ブラウザは chrome

CSV オブジェクト 再再書き直し後の処理時間

getCSVArray() 再書き直し後の処理時間 : ブラウザは chrome

getCSVArray() 再書き直し後の処理時間

getCSVArray() 書き直し後の処理時間 : ブラウザは chrome

getCSVArray() 書き直し後の処理時間

getCSVArray() 書き直し前の処理時間 : ブラウザは chrome

getCSVArray() 書き直し前の処理時間

数学の勉強をやり直ししてたりします。_´ω`)_