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
机器瞎学/数据掩埋/模式混淆/人工智障/深度遗忘/神经掉线/计算机幻觉/专注单身二十五年