Ой, извините! Я думал про один цикл - это не изначальное условие.
Впрочем, есть не один способ перебора без цикла, например,
вот (внизу). Или вот, например:
String.prototype.index = function(x){
var string = this, l1 = this.length, l2 = x.length;
for(var i = 0; i < l1; i++) if(this[i] === x[0] && (function(){
var count = 0;
return (function(){
if( count === l2 ) return true;
if( string[i + count] === x[count++] ) return arguments.callee();
return false;
})();
}())) return i;
return -1;
};