相容所有瀏覽器array物件indexOf()方法

admin發表於2018-05-11

indexOf()方法是ES5中新增,具有一定的瀏覽器相容問題。

關於此方法的基本用法可以參閱js陣列 indexOf()一章節。

下面就通過程式碼程式碼例項分享一段能夠相容所有瀏覽器的indexOf()方法。

程式碼例項:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
if(!Array.prototype.indexOf){
  Array.prototype.indexOf=function(obj,start){
    for(var index=(start || 0), j=this.length;index<j;index++){
      if(this[index]===obj){ 
        return index; 
      }
    }
    return -1;
  }
}
var arr=[1,2,3,4,5];
console.log(arr.indexOf(3,1))

上面的程式碼實現了我們的要求,下面介紹一下它的實現過程。

一.程式碼註釋:

(1).if(!Array.prototype.indexOf){},判斷當前瀏覽器是否支援indexOf()方法。

(2).Array.prototype.indexOf=function(obj,start){},如果不支援,那麼就自定義一個indexOf()方法,第一個引數是要查詢的元素,第二個參數列示查詢的起始位置。

(3).for(var index=(start || 0), j=this.length;index<j;index++){

  if(this[index]===obj){ 

    return index;

  }

}如果沒有傳遞start引數,那麼就是從索引值為0的位置開始查詢,也就是第一個位置開始查詢。

通過遍歷的方式找到指定元素,然後返回索引值。

(4).return -1,沒有找到就返回-1。

二.相關閱讀:

(1).prototype屬性的內容參閱javascript prototype原型一章節。 

(2).===參閱javascript的三個等號(===)的作用一章節。

相關文章