【JavaScript】實現indexOf方法

indexOf()方法是ES5中出現的數組方法,它有兩個參數
array.indexOf(value,start)
第一個參數指定要在數組查找的值,第二個可選參數指定開始查找的數組下標。如果省略,則為0。如果數組中存在匹配的值,就返回第一次匹配的數組下標,如果不存在匹配的值,則返回-1。
示例:['a','b','c'].indexOf('a',1) //返回-1

下面我們來自己實現這個方法,并保證其向下兼容性。

var indexof = function(array,value,start){
   if(array == null) return -1;
   var i=0,length = array.length;
   if(start){
       if(typeof start == 'number'){
           // 添加對start為負值時的處理
           i = (start < 0 ? Math.max(0,length+start):start);
        }
   }
   // 如果瀏覽器支持ES5 indexOf,則直接使用它
   if(Array.prototype.indexOf && array.indexOf === Array.prototype.indexOf){
        return array.indexOf(value,start);
   }
   // 遍歷數組
   for(;i<length;i++){
       if(array[i]===value){
           return i;
       }
   }
   return -1;
}
//測試
console.log(indexof([2,4,1,8,5],1,0));//輸出2

如此,我們就擴充了indexOf方法,使其在即便不支持的ES5的瀏覽器也能運行良好。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容