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

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

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

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

Q&A

1回答

193閲覧

[Node.js] readlineで読み込み,Math.random で表示させる方法

helloyohei

総合スコア10

Node.js

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

0グッド

0クリップ

投稿2019/05/16 12:22

以下を実行すると,random_word1, random_word2 ともに "と" が代入されます.
txtファイル内の単語をランダムで表示させるには,どのように改修すればよろしいでしょうか
ご教示いただけると幸いです.

Nodejs

1// txtの読み込み 2var fs = require('fs'); 3var readline = require("readline"); 4 5var stream = fs.createReadStream("./aaa.txt", "utf8"); 6var reader = readline.createInterface({ input: stream }); 7 8var random_word1 9var random_word2 10 11reader.on('line', (data) => { 12 // 受け取ったlineをランダムに出力 13 random_word1 = data[Math.floor(Math.random() * 1)]; 14 random_word2 = data[Math.floor(Math.random() * data.length)]; 15});

aaatxt

1いちご 2りんご 3とまと

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

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

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

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

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

mather

2019/05/16 12:29

1,2 行目は出力されないんですか?
mather

2019/05/16 12:34 編集

というか、表示する部分のコードがそもそも抜けてますね。 このままだと何も表示されないはずです。
guest

回答1

0

まずは

js

1reader.on('line', (data) => { 2 console.log(data); 3 console.log('----'); 4});

としてみて、期待したとおりの結果になるか確認してみてください。

投稿2019/05/16 12:36

mather

総合スコア6753

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

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

helloyohei

2019/05/16 14:32 編集

ご教示いただきありがとうございます! 上記の通りに実行したところ,以下のように期待結果通りとなりました. ``` いちご ---- りんご ---- とまと ---- ``` しかし,以下の設定で実行すると ```reader.on('line', (data) => { console.log(data[Math.floor(Math.random() * data.length)]); });``` ランダムな1つの単語ではなく,それぞれの単語の1文字が表示されました. もし,なにかお気付きの点がありましたら,お手すきの際にご教示いただけると大変助かります. ``` ち り と ```
helloyohei

2019/05/16 15:18 編集

リストではなくtxtファイルなので,以下はおかしいですね... 改めて解決方法を探ってみます. data[Math.floor(Math.random() * data.length)]
mather

2019/05/17 01:44

実行して気付いたと思いますが、 (data) => { ... } の部分は各行毎に実行されます。 > しかし,以下の設定で実行すると 設定?という言い方が適切ではないです。この場合でも data には "いちご" のような単語が入りますので、 data.length は文字列の長さで、 data[1] を参照した場合は文字列の中の文字 "ち" を参照することになりますよね。 このように、全部読み込み終わるまで何行あるのかわからないので、ランダムに行を表示させるのは難しく、readline は今回の目的では使うべきではないです。 ではどうすればいいのか、というのはまず頭をリセットして考えてみてください。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問