0

特定の文字のすべてのインデックスを文字列から配列に追加しようとしています。

次のコードがありますが、ブラウザが機能しないため、ブラウザを約10回再起動する必要がありました。

var xPositions = new Array();
var startPos = 0;
var string = "abcdexabcdexabcdexabcdexabcdexabcdexabcdex";

while (true) {

    var currentIndex = string.indexOf("x", startPos);

    if (currentIndex == -1) {
        break;
    }

    xPositions.push(currentIndex);
    startPos = currentIndex;

}

キャラクターの出現がなくなるまで永遠に繰り返すことを考え、それから壊れました。

どんな助け/提案もありがたいです。

4

1 に答える 1

1

試す

var currentIndex = string.indexOf("x", startPos+1);

同じ現在のインデックスを何度も取得していると思います。「indexOf」は指定したインデックスから検索を開始するため、最後の検索を基準にして検索をインクリメントする必要があります。

将来の参考のために、ブレークポイントでデバッガーを使用することを検討してください。このような問題は比較的簡単に見つけることができます(関連データのconsole.logをいくつか実行するだけでも、このタイプのバグからミンスミートを取り除くことができます-常に完全に見つけるのは難しいですこれまで使用したことのない関数がどのように機能するかを理解してください。その動作が期待と一致するかどうかを確認するのは恥ずかしいことではありません)。

于 2012-12-17T18:04:50.857 に答える