回答編集履歴

2

更新履歴を追記

2016/05/10 12:13

投稿

think49
think49

スコア18162

test CHANGED
@@ -1,5 +1,3 @@
1
-
2
-
3
1
  ### 配列
4
2
 
5
3
 
@@ -82,4 +80,14 @@
82
80
 
83
81
 
84
82
 
83
+
84
+
85
+ ### 更新履歴
86
+
87
+
88
+
89
+ - 2016/05/10 18:40 CSVパーサの説明を追加
90
+
91
+
92
+
85
93
  Re: sarah358 さん

1

CSVパーサの使い方

2016/05/10 12:13

投稿

think49
think49

スコア18162

test CHANGED
@@ -1,3 +1,9 @@
1
+
2
+
3
+ ### 配列
4
+
5
+
6
+
1
7
  配列にして `for` もしくは `forEach` で繰り返し処理させてみてはどうでしょうか。
2
8
 
3
9
  データをCSVで持っておき、配列に変換するジェネレータを作っておくと管理が楽になりそうです。
@@ -34,4 +40,46 @@
34
40
 
35
41
 
36
42
 
43
+ ### CSVパーサ
44
+
45
+
46
+
47
+ 管理面を考えるなら表データをcsvファイル化し、csvから配列に変換するCSVパーサを使うと良いと思います。
48
+
49
+ 大分前に `rfc4180.js` を作りましたが、今見ると修正したい部分が多数あったので csv.js に作り直しました。
50
+
51
+
52
+
53
+ - [csv.js: ES5 規定の JSON と同じインターフェースを持つCSVパーサ](https://gist.github.com/think49/009a8744c147a7013f14ea8913bd9027)
54
+
55
+ - [rfc4180.js](http://vird2002.s8.xrea.com/javascript/rfc4180.html)
56
+
57
+
58
+
59
+ ```
60
+
61
+ var csvString = '"すいか","山梨","5","7000"\r\n"すいか","山梨","6","6000"\r\n"すいか","山梨","7","5000"\r\n"すいか","山梨","8","4000"\r\n"すいか","山梨","9","3000"',
62
+
63
+ array = CSV.parse(csvString);
64
+
65
+
66
+
67
+ console.log(Object.prototype.toString.call(CSV)); // [object CSV]
68
+
69
+ console.log(CSV.stringify(array) === csvString); // true
70
+
71
+ console.log(JSON.stringify(array)); // [["すいか","山梨","5","7000"],["すいか","山梨","6","6000"],["すいか","山梨","7","5000"],["すいか","山梨","8","4000"]]
72
+
73
+ ```
74
+
75
+
76
+
77
+ `JSON.stringify(CSV.parse(csvString))` で配列初期化子を作り、静的HTML/JSに貼り付ける運用を想定しています。
78
+
79
+ csvファイルをGETして自動的に展開する方法もありますが、HTTPリクエストはタイムラグがあるので注意してください。
80
+
81
+ その方法を採用するなら csv.js と `XMLHttpRequest` を併用するか、`RFC4180#fileToArray` を利用するか。
82
+
83
+
84
+
37
85
  Re: sarah358 さん