JS every()方法:檢測陣列元素是否全部符合指定條件

2020-07-16 10:05:01
JavaScript every() 方法用來判斷陣列的所有元素是否都滿足指定的條件。

與 every() 方法類似的還有 some() 方法,它們的區別是:只有當陣列中的所有元素都滿足條件時,every() 才返回 true;只要陣列中有一個元素滿足條件,some() 就返回 true。請轉到《JS some()》了解詳情。

every() 具體用法如下:

array.every(callbackfn[, thisArg]);

引數說明:
  • array:必需引數,一個陣列物件。
  • callbackfn:必需引數,一個接收量最多三個引數的函數。every() 方法會為 array 中的每個元素呼叫 callbackfn函數,直到 callbackfn 返回 false,或直到到達陣列的結尾。
  • thisArg:可選引數,可在 callbackfn 函數中為其參照 this 關鍵字的物件。如果省略 thisArg,則 undefined 將用作 this 值。

如果 callbackfn 函數為所有陣列元素返回 true,則返回值為 true;否則返回值為 false。如果陣列沒有元素,則 every() 方法將返回 true。

every() 方法會按升序順序對每個陣列元素呼叫一次 callbackfn 函數,直到 callbackfn 函數返回 false。如果找到導致 callbackfn 返回 false 的元素,則 every() 方法會立即返回 false;否則,every() 方法返回 true。every() 方法不為陣列中缺少的元素呼叫該回撥函數。

除了陣列物件之外,every() 方法可由具有 length 屬性具有自己按數位編製索引的屬性名的任何物件使用,如關聯陣列物件、Arguments 等。

回撥函數語法如下:

function callbackfn(value, index, array); 

使用者可以使用三個引數來宣告回撥函數。回撥函數的引數說明如下。
  • value:陣列元素的值。
  • index:陣列元素的數位索引。
  • array:包含該元素的陣列物件。

範例1

下面範例檢測陣列中元素是否都為偶數,並進行提示。
function f (value, index, ar) {
    if (value % 2 == 0) {
        return true;
    }else {
        return false;
    }
}
var a = [2,4,5,6,8];
if (a.every(f)) {
    console.log("都是偶數");
}else{
    console.log("不全為偶數");
}

範例2

下面範例檢測陣列中元素的值是否在指定範圍內。範圍值通過一個物件來設定。通過本範例演示 thisArg 引數的用法。
var f = function (value) {
    if (typrof value !== 'number') {
        return false;
    }else {
        return value >=this.min && value <= this.max;
    }
var a = [10,15,19];
var obj = {min : 10, max : 20};
if (a.every(f, obj)) {
    console.log("都在指定範圍內。");
} else {
    console.log("部分不在範圍內。");
}