javascript模擬實現in_array()判斷指定元素是否在陣列中

螞蟻小編發表於2017-03-27

在javascript中,並沒有內建的類似於php的in_array()函式,此函式能夠檢測一個元素是否存在於指定陣列之中,下面就通過程式碼例項介紹一下如何利用javascript模擬實現此功能。

程式碼例項:

[JavaScript] 純文字檢視 複製程式碼
var in_array=function(arr){    
  var isArr=Object.prototype.toString.call(arr)==="[object Array]";
  if(!isArr){
    throw "arguments is not Array"; 
  }
  for(var index=0,k=arr.length;index<k;index++){
    if(this==arr[index]){
      return true;  
    }
  }
  return false;
}
 
String.prototype.in_array=in_array;
Number.prototype.in_array=in_array;
var arr=["螞蟻部落",2,"分享互助","努力奮鬥"];
var str='螞蟻部落';
var isInArray=str.in_array(arr);
console.log(isInArray);

上面的程式碼實現了我們的要求,模擬實現in_array()函式,下面介紹一下它的實現過程。

一.程式碼註釋:

1.var in_array=function(arr){},此函式實現了判斷功能,引數是一個陣列物件。

2.var isArr=Object.prototype.toString.call(arr)==="[object Array]",判斷引數是否是一個陣列。

3.if(!isArr){throw "arguments is not Array";},如果不是一個陣列,那麼就會丟擲一個異常。

4.for(var index=0,k=arr.length;index<k;index++),遍歷陣列元素中的每一個元素。

5.if(this==arr[index]){return true;},由於in_array()函式是物件原型鏈上的,所以this是指向指定物件例項的,如果相等則返回true。6.String.prototype.in_array=in_array,為String物件新增函式in_array。

7.Number.prototype.in_array=in_array,和上面是同樣的道理。

二.相關閱讀:

1.prototype可以參閱javascript prototype原型一章節。

2.call()函式可以參閱js call()一章節。

相關文章