使用本机String.prototype.indexOf方法最有效地找到每个偏移量。function locations(substring,string){ var a=[],i=-1; while((i=string.indexOf(substring,i+1)) >= 0) a.push(i); return a;}console.log(locations("s","scissors"));//-> [0, 3, 4, 7]但是,这是微优化。对于一个简单而简洁的循环,它将足够快:// Produces the indices in reverse order; throw on a .reverse() if you wantfor (var a=[],i=str.length;i--;) if (str[i]=="s") a.push(i); 实际上,Chrome上的本机循环比使用indexOf!更快速。