如何使用 for of() 方法和 indexOf() 方法迭代字符串以查找某些索引并获得预期结果?

How can a string be iterated using a for of() method and a indexOf() method to find certain indexes and getting the expected results?

我正在尝试使用 for of 迭代 string,以确定 string 具有的空 space 的索引,并记录以控制这些索引。我有一个包含 4 个白色(或空?)space 的 string,因此使用此 for of 方法并利用 indexOf(),我希望看到console 4 个不同的索引号,然而,行为很奇怪,它记录了第一个找到的白色 space 的索引,对于后来找到的每个白色 space。可能是什么原因造成的?

这是 'running snippet'。

const tipo = 'Quimes Bajo Cero  ';
    
    
for(char of tipo){
  char === ' ' ? console.log(tipo.indexOf(char)) : console.log('this character is not empty space');
}

谢谢大家。

那是因为 indexOf 方法 returns 字符串中第一个匹配字符的索引,所以在你的情况下,黑色的第一个匹配项在第 6 个索引处。 Read the Definition and Usage

您可以使用 forEach,转换字符串并循环

const tipo = 'Quimes Bajo Cero  ';
[...tipo].forEach((char, index) => char === ' ' ? console.log(index) : console.log('this character is not empty space')
)

是否必须使用“for...of”逻辑来实现?也可以使用以下逻辑来完成相同的操作:

for(let i=0;i<tipo.length;i++){
    if(tipo[i] === ' '){
        console.log(i);
    }
}