如何获取匹配字符的indexE

How to get indexOf of matching chracters

我想得到 indexOf 所有出现的字符。

例如,我有一个变量a

var a = "aabaaababaa";

我想为 a

中的所有字符获取 indexOf

我试过了:

for(i = 0; i < a.length ;i++){
   var len = a.indexOf(a);
   console.log(len);
}

但它 returns indexOf 仅用于第一个字符。

查看 indexOf (specification link, MDN link) 的第二个参数。第二个参数是开始查找的索引。因此,使用一个循环的值加一作为下一次搜索的起点。另外,寻找 string a,而不是在第一个参数处使用变量 a(例如,将 a 放在引号中):

var a = "aabaaababaa";
var index = -1;
while ((index = a.indexOf('a', index + 1)) != -1) {
  snippet.log(index);
}
<!-- Script provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>

如果您要查找更长的字符串,具体取决于您是否要在后续循环中匹配 within 该字符串,您可以每次加 1(如上所述)或添加您要查找的内容的长度。

你可以像这样循环,索引将包含所有索引。

var a = "aabaaababaa";
var indexes = [];

for(i = 0; i < a.length ;i++){  
    if(a.charAt(i) == "a") indexes.push(i);
}

console.log(indexes);

编辑:http://jsfiddle.net/lyncee/b65qo5bb/

你可以做到

    for(i = 0; i < a.length ;i++){
       var len = a.indexOf(a[i], i);
       console.log(len);
    }

a 是一个数组。您必须执行 a[i] 才能访问一个字符

用 var len = a.indexOf(a);您正在寻找变量的索引,因此在这种情况下它将始终为 return 0,因为您正在寻找此变量中变量的第一个索引。

如果你有这样的东西:var c="dfaabaaababaa",并且你使用 var len = c.indexOf(a);它将 return 2.

因此,您必须在其他索引中加注星标,例如:var len=a.indexOf(a, 2)(在本例中为 return -1,因为没有巧合)或者你必须在另一个变量中寻找它,其中包含你正在寻找的变量。

另一个可能的错误(我不知道你想要哪个结果)是你想寻找字符'a'。在这种情况下,您需要: 变量 len=[ ]; for(i = 0; i < a.length ;i++){
len.push(a.indexOf('a', i)); }