JavaScript every()

admin發表於2018-09-08

此方法可以結合some方法一起學習,ES5新增此方法。

some判斷陣列中是否有滿足指定條件的元素,任何一個元素滿足條件即可。

從方法名稱也能猜測出它們的區別,every方法非常嚴格,必須保證每一個元素都滿足才行。

更多內容可以參閱JavaScript Array 陣列一章節。

語法結構:

[JavaScript] 純文字檢視 複製程式碼
array.every(callbackfn[, thisArg])

every方法會以索引升序方式對陣列元素執行回撥函式callbackfn。

如果對所有的元素執行回撥函式,回撥函式的返回值為true,那麼every方法返回值為true,否則返回false。

特別說明:回撥函式的返回值你不一定非要是true本身,只要可以轉換為true即可。

引數解析:

(1).callbackfn:必需,回撥函式,對陣列的每一個元素執行一次回撥函式,直到回撥函式返回false。         

          回撥函式可以有三個引數:

            第一個引數是當前陣列元素值。

            第二個引數是當前陣列元素的索引。

            第三個引數就是陣列物件本身。

(2).thisArg:可選,規定回撥函式中this所指向的物件,省略,this指向window物件。

瀏覽器相容:

(1).IE9+瀏覽器支援此方法。

(2).edge瀏覽器支援此方法。

(3).谷歌瀏覽器支援此方法。

(4).火狐瀏覽器支援此方法。

(5).opera瀏覽器支援此方法。

(6).safria瀏覽器支援此方法。

程式碼例項:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
function CheckIfEven(value, index){
  console.log(value);
  if(value % 2 == 0){
    return true;
  }       
}
let numbers=[2, 4, 5, 6, 8];
 
if(numbers.every(CheckIfEven)){
  console.log("全都是偶數");
}
else{
  console.log("不全都是偶數");
}

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/08/005714l6zsznlxrtnwrilt.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

程式碼分析如下:

(1).every方法傳遞一個回撥函式。

(2).回撥函式會以升序方式執行陣列中的元素,直到回撥函式返回false,否則直到陣列結尾。

(3).上述程式碼中,回撥函式可以判斷陣列元素是否是偶數,如果是偶數則返回true,否則返回false。

(4).陣列第三個元素5,它不是偶數,回撥函式返回false,那麼就終止every方法的執行,every返回false。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
function CheckIfEven(value, index){
  console.log(value);
  if(value % 2 == 0){
    return "螞蟻部落";
  }       
}
let numbers=[2, 4, 5, 6, 8];
 
if(numbers.every(CheckIfEven)){
  console.log("全都是偶數");
}
else{
  console.log("不全都是偶數");
}

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/08/005758nwxwi3ukasse2www.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

回到函式的返回值沒有必要非得是true本身,只要可以轉換為true即可,對於false也是如此。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let obj={
  num:3
}
function CheckIfEven(value, index){
  console.log(value);
  if(value*this.num % 2 == 0){
    return "螞蟻部落";
  }       
}
let numbers=[2, 4, 5, 6, 8];
 
if(numbers.every(CheckIfEven,obj)){
  console.log("全都是偶數");
}
else{
  console.log("不全都是偶數");
}

程式碼執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/201809/08/005843grhrhdbbhir9p7g7.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

為every方法傳遞第二個引數,那麼回撥函式的this就會指向此物件。

相關文章