質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

Q&A

解決済

1回答

600閲覧

for文とwhile文とbreak文で512個づつデータを取り出したい

putaro

総合スコア9

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

コードレビュー

コードレビューは、ソフトウェア開発の一工程で、 ソースコードの検査を行い、開発工程で見過ごされた誤りを検出する事で、 ソフトウェア品質を高めるためのものです。

0グッド

0クリップ

投稿2021/09/26 02:52

前提・実現したいこと

外部から取得した複数csvファイルのデータをfor文while文を使って順番に512個りづつ取り出したいのですが、思った通りに動作しません。

使用環境

macOS ver 11.6
node.js ver v6.8.0

ソースコード

取得した外部ファイルを順番に512個づつ取り出す

js

1 // データセット作成 2 var myReg = new RegExp('^.*?,.*?,.*','mg'); 3 var valuesAry = []; 4 var dataObj = {}; 5 6 console.log("textAry length " + textAry.length); 7 // 該当箇所はここから 8 // 取得した外部ファイル数だけ繰り返す 9 for(let s = 0; s < textAry.length; s++) { 10 console.log(s + "kaime"); 11 var cnt = 0; 12 var resultMatch = myReg.exec(textAry[s]); 13 // while文の中で512個目でストップさせて次のファイルへ行く 14 while(resultMatch != null) { 15 var splitValueAry; 16 var valuesObj = {}; 17 splitValueAry = resultMatch[0].split(","); 18 //console.log(splitValueAry); 19 20 valuesObj.x = parseFloat(splitValueAry[0]); 21 valuesObj.y = parseFloat(splitValueAry[1]); 22 valuesObj.z = parseFloat(splitValueAry[2]); 23 valuesObj.symbol = symbolAry[s]; 24 25 valuesAry.push(valuesObj); 26 27 //console.log("Now valuesAry " + valuesAry.length); 28 // 何回目か調べる 29 if (cnt == 511) { 30 console.log(cnt + " 回目 次に移ります") 31 break; 32 } 33 resultMatch = myReg.exec(textAry[s]); 34 console.log("count: " + cnt); 35 cnt++; 36 } 37 } 38 console.log("valuesAry Length : " + valuesAry.length); 39 dataObj.values = valuesAry;

実行結果

// 省略 count: 506 count: 507 count: 508 count: 509 count: 510 511 回目 次に移ります 1kaime count: 0 count: 1 //途中で終了する valuesAry Length : 514

今回は2つのcsvファイルから取り出しを行なったので1024個のデータを取り出したい

csvファイル一部

一番左は行番号になります

107184 -0.008,-0.019,0.043 107185 -0.003,-0.010,0.049 107186 -0.001,-0.015,0.053 107187 0.002,-0.006,0.062 107188 -0.001,-0.010,0.048 107189 0.003,-0.010,0.053 107190 0.003,-0.016,0.047 107191 -0.001,-0.008,0.046 107192 0.003,-0.009,0.048 107193 0.004,-0.011,0.052 107194 -0.002,-0.020,0.047 107195 0.002,-0.010,0.044 107196 0.004,-0.016,0.040 107197 0.004,-0.011,0.042 107198 -0.005,-0.008,0.044 107199 -0.001,-0.012,0.039 107200 0.002,-0.007,0.050

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

解決しました

原因は正直よくわからないのですが、512回目を調べるif文の箇所に(カウント用の変数)cnt=0を足してみたら思った通りに動作しました。正直どうなっているのか分からないです... もしかしたら、データや他のコード箇所にも問題があるかもしれません。

js

1 // 512に変えました 2 if (cnt == 512) { 3 console.log(cnt + " 回目 次に移ります") 4              // ここが修正箇所です 5 cnt = 0; 6 break; 7 }

実行結果

// 省略 count: 506 count: 507 count: 508 count: 509 count: 510 count: 511 valuesAry Length : 1024

投稿2021/09/26 05:39

putaro

総合スコア9

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問