JavaScript some()

admin發表於2018-09-12

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

兩個方法的功能分別如下:

(1).some() 方法判斷陣列中是否有滿足指定條件的成員。

(2).every() 方法判斷陣列成員是否全部滿足指定條件。

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

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

語法結構:

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

引數解析:

(1).callbackfn:必需,回撥函式,以索引升序方式對陣列每一個成員執行一次回撥函式 callbackfn,如果 callbackfn 呼叫返回值為 true(或可以轉換為 true),說明有滿足條件的陣列成員,於是終止 some() 方法的執行,並返回 true,如果沒有滿足條件的陣列成員 some() 返回 false,callbackfn 可以有三個引數:

          第一個引數是當前陣列成員。

          第二個引數是當前陣列成員的索引。

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

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

瀏覽器相容:

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

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

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

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

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

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

程式碼例項:

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

谷歌開發者工具控制檯執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/202003/30/140843tzgmvc5o7ykm75mm.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

程式碼分析如下:

(1).some() 方法以索引升序方式對每一個陣列成員執行一次 回撥函式。

(2).回撥函式判斷當前陣列成員是否是偶數,如果是,則返回 true,並終止some() 的執行。

(3).當遍歷到成員 4,滿足條件,並終止整個 some() 的執行,some() 返回 true。

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

谷歌開發者工具控制檯執行效果截圖如下:

a:3:{s:3:\"pic\";s:43:\"portal/202003/30/140614xdgwzekctft14eew.png\";s:5:\"thumb\";s:0:\"\";s:6:\"remote\";N;}

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

相關文章