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 回答