1. ホーム
  2. javascript

文字列中の指定した文字の全指標を検索する

2023-08-28 17:25:03

質問

例えば、私が "scissors" という文字が出現する位置を知りたかったとします。 "s" と表示された場合、次のように出力されます。 1, 4, 5, 8 .

JavaScriptでこれを最も効率的に行うにはどうしたらよいでしょうか?全体をループさせるのはあまり効率的とは思えません。

どのように解決するのですか?

単純なループが有効です。

var str = "scissors";
var indices = [];
for(var i=0; i<str.length;i++) {
    if (str[i] === "s") indices.push(i);
}

ここで、1,4,5,8が欲しいと指示します。インデックスはゼロベースなので、これは0,3,4,7を意味します。つまり、1つ追加することができます。

if (str[i] === "s") indices.push(i+1);

と入力すれば、期待通りの結果が得られます。

フィドルを見ることができます をご覧ください。 .

<ブロッククオート

全体をループさせるのはひどく効率が悪いと思うのですが

パフォーマンスに関しては、問題にぶつかるまで深刻に心配する必要はないと思います。

以下は jsPerf のテストでは、さまざまな回答を比較しています。Safari 5.1 では、IndexOf が最も優れたパフォーマンスを発揮します。Chrome 19 では、for ループが最も高速です。