JavaScript some() 方法用來檢測陣列中是否存在符合指定條件的元素,存在就返回 true,不存在就返回 false。換個角度思考,some() 也可以用來檢測陣列中的所有元素是否都不符合指定條件,都不符合的話就返回 false,有一個或者多個符合的話就返回 true。
與 some() 方法類似的還有 every() 方法,它們的區別是:只要陣列中有一個元素滿足條件,some() 就返回 true;只有當陣列中的所有元素都滿足條件時,every() 才返回 true。請轉到《JS every()》了解詳情。
some() 具體用法如下:
array.some(callbackfn[, thisArg]);
引數說明:
-
array:必需引數,一個陣列物件。
-
callbackfn:必需引數,一個接收量最多三個引數的函數。some() 方法會為 array 中的每個元素呼叫 callbackfn 函數,直到 callbackfn 返回 true,或直到到達陣列的結尾。
-
thisArg:可選引數,可在 callbackfn 函數中為其參照 this 關鍵字的物件。如果省略 thisArg,則 undefined 將用作返回 false。
song() 方法會按升序索引順序對每個陣列元素呼叫 callbackfn 函數,直到 callbackfn 函數返回 true。如果找到導致 callbackfn 返回 true 的元素,則 some() 方法會立即返回 true。如果回撥不對任何元素返回 true,則 some() 方法會返回 false。
some() 方法不為陣列中缺少的元素呼叫該回撥函數。除了陣列物件之外,some() 方法可由具有 length 屬性且具有已按數位編製索引的屬性名的任何物件使用,如關聯陣列、Arguments 等。
範例3
下面範例檢測陣列中元素的值是否為奇數。如果 some() 方法檢測到偶數,則返回 true,並提示不全是奇數;如果沒有檢測到偶數,則提示全部是奇數。
function f(value, index, ar) {
if (value % 2 == 0) {
return true;
}
}
var a = [1,15,4,10,11,22];
var evens = a.some(f);
if (evens) {
console.log("不全是奇數。");
} else {
console.log("全是奇數。");
}