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

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

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

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

3回答

350閲覧

1部の文字列があっていれば表示したい

shosinnshadesu

総合スコア93

Node.js

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

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

1グッド

0クリップ

投稿2020/07/05 00:47

編集2020/07/05 00:48

javasript

1process.stdin.resume(); 2process.stdin.setEncoding('utf8'); 3 4let lines = []; 5let reader = require('readline').createInterface({ 6 input: process.stdin, 7 output: process.stdout 8}); 9reader.on('line', (line) => { 10 lines.push(line); 11}); 12reader.on('close', () => { 13 for (i = 2; Number(i>lines[0])+2; i++) { 14 let n = lines[i].indexOf(lines[1]); 15 if (n >= 0) { 16 console.log(lines[i]); 17 } 18 } 19});
入力 3 kon ohayou konnnitiwa konnbannwa
期待される出力 konnnitiwa konnbannwa

1部の文字列があっていればその文字列を表示したいです。
教えていただけると幸いです。

y97👍を押しています

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

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

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

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

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

y_waiwai

2020/07/05 00:56

現状のコードではどういう結果になり、どういう不具合があるんでしょうか
shosinnshadesu

2020/07/05 01:13

TypeError: Cannot read property 'indexOf' of undefined このようなエラーになってしまいます。
guest

回答3

0

実行環境が制限されたコンテスト系サイトなど、何かの課題ですよね。
(close イベント内の処理の組み立て方を試される問題と推測)

教えていただけると幸いです

本音は、「推測どおりなら、聞いちゃ駄目でしょw」なのですが、もう回答が出ているので。
入力行数の確認処理を省略した2パターン。

モダン環境

javascript

1// lines = [3, "kon","phayou","konnitiha","konbannwa"], 2let [n, test, ...words] = lines; 3for ( let word of words ) ~word.indexOf(test) && console.log( word );

古い環境:配列を破壊的処理する例

javascript

1// lines = [3, "kon","phayou","konnitiha","konbannwa"]; 2var t,w; 3lines.shift(),t=lines.shift(); 4while ( lines.length ) ~(w=lines.shift()).indexOf(t) && console.log( w );

投稿2020/07/05 05:56

AkitoshiManabe

総合スコア5432

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

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

0

ベストアンサー

実行して動かしてみたのですが、下記をうめこむと

reader.on('close', () => { console.log(lines);

[ '3', 'kon', 'ohayou', 'konnnitiwa', 'konnbannwa', '' ]
このように出力されます。空文字や1文字の場合に誤動作しているようです。
また、2文字以上の入力があっても無限ループしているように思います。

for (i = 2; Number(i>lines[0])+2; i++) {

この記載の意図がわかりません。1行目がiより大きければNumberキャストして2を追加??

reader.on('close', () => { for (i = 2; i < lines.length; i++) { let n = lines[i].indexOf(lines[1]); if (n >= 0) { console.log(lines[i]); } } });

やりたいのはこういうことですかね。

投稿2020/07/05 03:19

standard-soft

総合スコア197

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

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

0

Nodeはよくわからないですが、普通のjsでどうさするなら

javascript

1var reg=new RegExp(lines[1]); 2lines.splice(2).filter(x=>reg.test(x)).forEach(x=>console.log(x));

投稿2020/07/05 02:38

yambejp

総合スコア114843

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問