将字符串中所有出现的字符的索引添加到数组中

时间:2012-12-17 18:02:43

标签: javascript arrays iteration indexof

我正在尝试将特定字符的所有索引从字符串添加到数组中。

我有以下代码,但我不得不重启我的浏览器大约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;

}

我想过永远迭代,直到不再出现这个角色,然后休息。

任何帮助/建议表示赞赏。

1 个答案:

答案 0 :(得分:1)

尝试

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

我认为你一遍又一遍地获得相同的当前指数。 “indexOf”在您指定的索引处开始搜索,因此您必须相对于最后一个查找增加它。

为了将来参考,您可以考虑尝试使用带断点的调试器,这样的问题变得相对容易发现(即使只是做一些console.log的相关数据可以使mincemeat摆脱这种类型的bug - 这很难要始终完全理解你以前从未使用过的功能是如何工作的,看看它的行为是否与你的期望相符并不可耻。