Javascript 返回某个字符的所有索引的数组?

Javascript 返回某个字符的所有索引的数组?,javascript,Javascript,我试图做的应该很简单,我不知道为什么我的代码不能工作。我正在创建一个函数,该函数应该返回指定字符的所有索引的数组 var str = "audiueaaudliusa"; str = str.split(""); var emptyArr = []; function abCheck(str) { for (i = 0; i < str.length; i++) { if(str[i] === "a") {

我试图做的应该很简单,我不知道为什么我的代码不能工作。我正在创建一个函数,该函数应该返回指定字符的所有索引的数组

    var str = "audiueaaudliusa";
    str = str.split("");
    var emptyArr = [];

    function abCheck(str) {
        for (i = 0; i < str.length; i++) {
          if(str[i] === "a") {
            emptyArr.push(str.indexOf(str[i]));
          }
        }
        return emptyArr;
    }
var str=“audiueaaudliusa”;
str=str.split(“”);
var emptyArr=[];
功能检查(str){
对于(i=0;i
在上面的示例中,它返回一个[0,0,0,0]数组。我希望代码返回[0,6,7,14]的数组


请提供一个解决方案,如果可能的话,解释一下这里出了什么问题。

问题是行
emptyArr.push(str.indexOf(str[i])String.indexOf()
返回字符的第一个匹配实例的索引

如评论中所述,此问题的纠正方法是简单地使用:

emptyArr.push(i);
它将当前索引(由
i
表示)推送到数组中:

var str=“audiueaaudliusa”;
var emptyArr=[];
功能检查(str){
//在for循环中,我做了几个小改动:
//-生成“i”和“len”局部变量,
//-使用“len”以避免“str.length”出现错误
//需要在每次迭代中重新评估(这是一个很小的,
//尽管有微小的优化):
对于(变量i=0,len=str.length;iconsole.log(abCheck(str));//[0,6,7,14]
也不要将
i
设置为全局<代码>用于(变量i=0;i