質問編集履歴

3

コードの追記をしました。

2019/03/04 09:23

投稿

ayaayape
ayaayape

スコア12

test CHANGED
File without changes
test CHANGED
@@ -78,6 +78,18 @@
78
78
 
79
79
  ```JavaScript
80
80
 
81
+ <div class="content">
82
+
83
+
84
+
85
+ <form name="myform">
86
+
87
+ <input name="myfile" type="file" />
88
+
89
+ <!-- <textarea name="output" cols="100" rows="0" ></textarea>-->
90
+
91
+ </form>
92
+
81
93
 
82
94
 
83
95
  <script>
@@ -288,4 +300,86 @@
288
300
 
289
301
  </script>
290
302
 
303
+ <script type="text/javascript">
304
+
305
+
306
+
307
+ // CSVファイルを2次元配列に変換
308
+
309
+ function csv2Array(str) {
310
+
311
+ var csvData = []; //最終的な二次元配列を入れるための配列
312
+
313
+ var lines = str.split("\n");  //改行を区切り文字として1行ずつ読み取った配列を生成
314
+
315
+
316
+
317
+ //各行ごとにタグで区切った文字列を要素とした二次元配列を生成
318
+
319
+ for (var i = 0; i < lines.length; ++i) {
320
+
321
+
322
+
323
+ var cells = lines[i].split("\t"); //タグで区切って分割する
324
+
325
+ csvData.push(cells);
326
+
327
+
328
+
329
+ //秒に変換する値を取得
330
+
331
+ for(var i=11;i<cells.length;i++){
332
+
333
+
334
+
335
+ if((i%8==3)){
336
+
337
+ if((cells[i] !="")){
338
+
339
+ console.log(cells[i+1]); //チェック
340
+
341
+ var seconds = FormatToSeconds(cells[i+1]);//実施時間
342
+
343
+ console.log(seconds); //チェック
344
+
345
+ cells[i+1] = seconds; //配列に戻す
346
+
347
+ }
348
+
349
+ };
350
+
351
+ };
352
+
353
+ }
354
+
355
+ return csvData;
356
+
357
+ }
358
+
359
+
360
+
361
+ //〇分〇秒⇒△秒に変換する関数(△の値のみ取得)
362
+
363
+ function FormatToSeconds(minSec){
364
+
365
+ return parseInt(minSec.replace(/(\d+)分(\d+)秒/, (_, minitues, seconds) => minitues * 60 + seconds *1));
366
+
367
+ var seconds = FormatToSeconds("");
368
+
369
+ }
370
+
371
+
372
+
373
+ //〇時間〇分〇秒⇒△秒に変換する関数(△の値のみ取得)
374
+
375
+ function FormatToSeconds(houSec){
376
+
377
+   return parseInt(houSec.replace(/(\d+)時間(\d+)分(\d+)秒/, (_,hours, minitues, seconds) => hours * 3600 + minitues * 60 + seconds *1));
378
+
379
+ var seconds = FormatToSeconds("");
380
+
381
+ }
382
+
383
+
384
+
291
385
  ```

2

書式の改善

2019/03/04 09:23

投稿

ayaayape
ayaayape

スコア12

test CHANGED
File without changes
test CHANGED
@@ -62,11 +62,13 @@
62
62
 
63
63
  としたいのですが、①~③の記述の仕方が分からず、進められていない状況です。
64
64
 
65
- 以下のコードは、調べて似たようなものをまねてやってみたものです。
65
+ 以下のコードは、調べて似たような記述をまねてやってみたものです。
66
-
67
-
68
-
66
+
67
+
68
+
69
- これで方向性っていのでしょうか
69
+ これでは値の取得はできなかたのですが、どこを改善していけばいいのでしょうか
70
+
71
+
70
72
 
71
73
  何かご教示いただけますと幸いです。
72
74
 

1

分かりにくい質問をしてしまい、大変申し訳ありませんでした。現段階でできているコードを追加させていただきました。よろしくお願いいたします。

2019/03/03 03:53

投稿

ayaayape
ayaayape

スコア12

test CHANGED
@@ -1 +1 @@
1
- 【JavaScript】CSVファイルのデータをselectboxの値に設定したいです。
1
+ 【JavaScript】複雑なCSVファイルのデータをselectboxの値に設定したい
test CHANGED
@@ -1,4 +1,6 @@
1
+ 前提・実現したいこと
2
+
1
- 以下のようなCSVファイルのデータを、selextboxの値に設定したいです。
3
+ 以下のようなCSVファイルのデータを、selextboxの値に設定したいです。
2
4
 
3
5
 
4
6
 
@@ -48,12 +50,240 @@
48
50
 
49
51
 
50
52
 
51
- CSVファイルは、2次元配列をし、dataという形ですでに取得できているのですが、
52
-
53
- 、どうしていいか全くわかっていません。
53
+ 現段階で、CSVファイル読み取りたい値の取得できていません。
54
+
54
-
55
+ 上記のCSVファイルで、
56
+
55
-
57
+ ①,1列目(年)は、2019年を取得し、空白行があった次の行の2018年を取得する。
58
+
59
+ ②,2列目(月)は、1月を取得し、空白行があった次の行の2月を取得する。
60
+
61
+ ③,3列目(日)は、空白行があるまで、値を取得する。(1日から7日まで)
62
+
63
+ としたいのですが、①~③の記述の仕方が分からず、進められていない状況です。
64
+
65
+ 以下のコードは、調べて似たようなものをまねてやってみたものです。
66
+
67
+
68
+
69
+ これで方向性はあっているのでしょうか?
56
70
 
57
71
  何かご教示いただけますと幸いです。
58
72
 
59
73
  よろしくお願いいたします。
74
+
75
+
76
+
77
+ ```JavaScript
78
+
79
+
80
+
81
+ <script>
82
+
83
+ //Form要素を取得する
84
+
85
+ var form = document.forms.myform;
86
+
87
+ //FileReaderのインスタンスを作成する
88
+
89
+ var reader = new FileReader();
90
+
91
+ var data;
92
+
93
+
94
+
95
+ //ファイルが読み込まれた時の処理
96
+
97
+ form.myfile.addEventListener('change', function(e) {
98
+
99
+
100
+
101
+ //ここにファイル取得処理を書く
102
+
103
+ var result = e.target.files[0];
104
+
105
+
106
+
107
+ //読み込んだファイルの中身を取得する
108
+
109
+ reader.readAsText( result );
110
+
111
+
112
+
113
+ //ファイルの中身を取得後に処理を行う
114
+
115
+ reader.addEventListener( 'load', function() {
116
+
117
+
118
+
119
+ //CSVを1行ずつ読み込む
120
+
121
+ console.log( reader.result.split('\n') );
122
+
123
+
124
+
125
+ // 2) CSVデータ変換の呼び出し
126
+
127
+ data = csv2Array(reader.result);
128
+
129
+ })
130
+
131
+
132
+
133
+ })
134
+
135
+
136
+
137
+ </script>
138
+
139
+ </div>
140
+
141
+
142
+
143
+ <select name="year" id="selectbox1" class="input">
144
+
145
+ <option value="">選択してください</option>
146
+
147
+
148
+
149
+ </select>
150
+
151
+ <select name="month" id="selectbox2" class="input">
152
+
153
+ <option value="">選択してください</option>
154
+
155
+ </select>
156
+
157
+ <select name="day" id="selectbox3" class="input">
158
+
159
+ <option value="">選択してください</option>
160
+
161
+ </select>
162
+
163
+
164
+
165
+ <div class="content">
166
+
167
+
168
+
169
+ <script type="text/javascript">
170
+
171
+
172
+
173
+ $(function(){
174
+
175
+ var yearList=[],monthList=[],dayList=[];
176
+
177
+
178
+
179
+ for(i=13 ; i<250 ; i++){
180
+
181
+ if(i%8==3){
182
+
183
+ yearList.push(data[0][i]);
184
+
185
+ monthList.push(data[1][i]);
186
+
187
+ dayList.push(data[2][i]);
188
+
189
+ }
190
+
191
+ }
192
+
193
+
194
+
195
+ function(data){
196
+
197
+ yearList=data.yearList;
198
+
199
+ for(var i in yearList){
200
+
201
+ $("#selectbox1").append("<option value=" + yearList[i].yearNumber + ">" + yearList[i].yearName + "</option>");
202
+
203
+
204
+
205
+ }
206
+
207
+ });
208
+
209
+
210
+
211
+ $("#selectbox1").on('change',function(){
212
+
213
+ var v=$(this).val();
214
+
215
+ var year=yearList.filter(function(x){
216
+
217
+ return x.yearNumber==v;
218
+
219
+ });
220
+
221
+
222
+
223
+ $("#selectbox2 option:gt(0),#selectbox3 option:gt(0)").remove();
224
+
225
+ if(year.length>0){
226
+
227
+
228
+
229
+ monthList=area[0].monthList;
230
+
231
+
232
+
233
+ for(var i in monthList){
234
+
235
+ $("#selectbox2").append("<option value=" + monthList[i].monthNumber + ">" + monthList[i].monthName + "</option>");
236
+
237
+ }
238
+
239
+ }
240
+
241
+ });
242
+
243
+
244
+
245
+ $("#selectbox2").on('change',function(){
246
+
247
+
248
+
249
+ var v=$(this).val();
250
+
251
+
252
+
253
+ var month=monthList.filter(function(x){
254
+
255
+ return x.monthNumber==v;
256
+
257
+ });
258
+
259
+
260
+
261
+ $("#selectbox3 option:gt(0)").remove();
262
+
263
+
264
+
265
+ if(month.length>0){
266
+
267
+
268
+
269
+ dayList=class[0].dayList;
270
+
271
+
272
+
273
+ for(var i in dayList){
274
+
275
+ $("#selectbox3").append("<option value=" + dayList[i].name + ">" + dayList[i].name+ "</option>");
276
+
277
+ }
278
+
279
+ }
280
+
281
+ });
282
+
283
+ });
284
+
285
+
286
+
287
+ </script>
288
+
289
+ ```