どうもみなさん、こんにちは。
最近毎日更新をしてます。褒めてください。switchです。
今回解説するのは、ある文字が文字列の中にいくつ存在するかを調べる方法です。
色んな場面で使えるかなと思うので、ぜひ最後までお読みください!

for文で一文字ずつ調べる方法

早速ですが、スクリプトを見ましょう。


for(i = 0,str = "doraemoooooon",counter = 0;i < str.length;i++) counter += (str[i] === "o");
  console.log(counter);//7

JavaScript初心者の方は、「ん?」なったのではないでしょうか。
少なくとも私はそうなってた時期がありました。
そう、for文が一行にまとめられてるんですね。
for文は、処理が一行だけならその一行に処理を書くことができます。

また、変数counterに条件式を足しているのも謎かもしれません。
JavaScriptでは(JavaScriptに限った話ではないと思いますが)、条件式がtrueの場合は1,falseの場合は0を出力します。
つまりここでは、変数counterに、条件式がtrueの場合は1を足していて、それ以外に0を足しているわけですね。

全体の解説

スクリプト全体の解説をします。
上のスクリプトは、こんな順番で処理が行われます。
1.strに文字列を入れる
2.strに入った文字列の数だけループをするfor文を作る。
3.for文内のi(ループした回数)番目の文字がoかどうかを調べ、その回数を数える←これをループ
4.数えた回数を出力

一応載せておく、もう一つのやり方

本当はもう一つやり方があるのですが、それは私自身がスクリプトを理解してないので、解説はしません。
一応載せておきますね。


 var str = "doraemooooon";
 var n = str.split("o").length - 1;
  console.log(n);//6

これはネットで見つけて、実際に動いたのですが、どのように動いてるのかはわかっていません。。。
なぜかsplitメソッドを使っているんですよね。
まあ、for文を用いればいい話ではあるのですが、for文だと結局全探索を使うことになるので、時間もかかりますし処理も重くなってしまいます。
このスクリプトのアルゴリズムが全探索でさえなければ、この方法が望ましいことになります。
誰かわかる方がいたら教えてください(> <) 他人任せで申し訳ないです。。。 それでは今回の解説はこのへんで。 ここまでお読みいただきありがとうございました!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA