JavaScript some()

admin發表於2018-09-12

some結合every方法一起學習有助於理解,ES5新增此方法。

兩個方法的用法和區別如下:

(1).some方法用於判斷陣列中是否有滿足指定條件的元素。

(2).every方法用於判斷陣列元素是否全部滿足指定條件。

some方法的詳細用法後面會通過程式碼例項進行詳細演示。

關於every方法內容參閱JavaScript every()一章節。

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

語法結構:

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

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

如果回撥函式返回值為true(可以轉換為true),那麼終止some函式的執行,並返回true,否則返回false。

引數解析:

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

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

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

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

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

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

瀏覽器相容:

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

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

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

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

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

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

程式碼例項:

[JavaScript] 純文字檢視 複製程式碼執行程式碼
function CheckIfEven(value,index,array) {
  if(value % 2 == 0){
    return true;
  }     
}
let numbers =[1, 15, 4, 10, 11, 22];
let evens=numbers.some(CheckIfEven);
console.log(evens);

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

a:3:{s:3:\"pic\";s:43:\"portal/201809/12/100656pokuphzpafaua4zy.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

程式碼解析如下:

some方法會以索引升序的方式對每一個陣列元素執行回撥函式。

回撥函式判斷當前陣列元素是否是偶數,如果是則返回true,那麼終止some的執行。

上述程式碼中,當遍歷到元素4,回撥函式返回true,那麼終止整個some的執行,some返回true。

[JavaScript] 純文字檢視 複製程式碼執行程式碼
let obj={
   num:3 
}
function CheckIfEven(value,index,array) {
  if(value*this.num % 2 == 0){
    return true;
  }     
}
let numbers =[1, 15, 4, 10, 11, 22];
let evens=numbers.some(CheckIfEven,obj);
console.log(evens);

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

a:3:{s:3:\"pic\";s:43:\"portal/201809/12/100737zy34d3hph5j455mp.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

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

相關文章