javascript String.indexOf实现
群里abcd提出问题,现在有以下三个实现,欢迎大家参与(注意,为了兼容IE6,不能使用str[i],要用str.charAt(i);不能使用slice,replace等原生函数):
GrayZhang的实现
String.prototype.substring = function(start, length) {
var array = [];
for (var i = start; i < start + length; i++) {
array.push(this.charAt(i));
}
return array.join();
};
String.prototype.indexOf = function(s) {
for (var i = 0; i < this.length - s.length; i++) {
if (this.charAt(i) === s.charAt(0) &&
this.substring(i, s.length) === s) {
return i;
}
}
return -1;
};
我的实现:
//by 司徒正美 2011.8.18
String.prototype.indexOf = function(sub){
var a = sub.charAt(0),an = sub.length,n = this.length;
if(n == an){
return this == sub ? 0 : -1
}
if(n < an){
return -1
}
loop:
for(var i=0;i < n;i++){
if(this.charAt(i) == a){
for(var j=1;j < an;j++){
if(this.charAt(j+i) != sub.charAt(j)){
continue loop
}
}
return i
}
}
return -1;
}
var a = "aabbccb";
console.log(a.indexOf("bbccb"))//2
console.log("Blue Whale".indexOf("Blue") ) // returns 0
console.log("Blue Whale".indexOf("Blute")) // returns -1
推荐.NET配套的通用数据层ORM框架:CYQ.Data 通用数据层框架