試一試
const isBelowThreshold = (currentValue) => currentValue < 40;
const array1 = [1, 30, 39, 29, 10, 13];
console.log(array1.every(isBelowThreshold));
// Expected output: true
語法
every(callbackFn)
every(callbackFn, thisArg)
引數
callbackFn-
一個用於在陣列的每個元素上執行的函式。它應該返回一個真值(truthy value)來表示該元素透過測試,否則返回一個假值(falsy value)。該函式將使用以下引數呼叫:
thisArg可選-
在執行
callbackFn時用作this的值。請參閱 迭代方法。
返回值
true,除非 callbackFn 為陣列元素返回一個假值(falsy value),在這種情況下會立即返回 false。
描述
every() 方法是一個迭代方法。它會為陣列中的每個元素呼叫一次提供的 callbackFn 函式,直到 callbackFn 返回一個假值(falsy value)。如果找到這樣的元素,every() 會立即返回 false 並停止迭代陣列。否則,如果 callbackFn 對所有元素都返回一個真值(truthy value),every() 則返回 true。有關這些方法如何工作的更多資訊,請閱讀迭代方法部分。
every 類似於數學中的“對所有”(for all)量詞。特別是,對於空陣列,它返回 true。(空真)空集中的所有元素都滿足任何給定條件是空真的。
callbackFn 僅對具有已賦值的陣列索引呼叫。對於稀疏陣列中的空槽,它不會被呼叫。
every() 方法是通用的。它只要求 this 值具有 length 屬性和整數鍵屬性。
示例
測試所有陣列元素的大小
下面的示例測試陣列中的所有元素是否都大於或等於 10。
function isBigEnough(element, index, array) {
return element >= 10;
}
[12, 5, 8, 130, 44].every(isBigEnough); // false
[12, 54, 18, 130, 44].every(isBigEnough); // true
檢查一個數組是否是另一個數組的子集
下面的示例測試一個數組中的所有元素是否都存在於另一個數組中。
const isSubset = (array1, array2) =>
array2.every((element) => array1.includes(element));
console.log(isSubset([1, 2, 3, 4, 5, 6, 7], [5, 7, 6])); // true
console.log(isSubset([1, 2, 3, 4, 5, 6, 7], [5, 8, 7])); // false
使用 callbackFn 的第三個引數
如果想訪問陣列中的另一個元素,array 引數很有用。下面的示例首先使用 filter() 提取正數,然後使用 every() 檢查陣列是否嚴格遞增。
const numbers = [-2, 4, -8, 16, -32];
const isIncreasing = numbers
.filter((num) => num > 0)
.every((num, idx, arr) => {
// Without the arr argument, there's no way to easily access the
// intermediate array without saving it to a variable.
if (idx === 0) return true;
return num > arr[idx - 1];
});
console.log(isIncreasing); // true
在稀疏陣列上使用 every()
every() 不會在空槽上執行其謂詞。
console.log([1, , 3].every((x) => x !== undefined)); // true
console.log([2, , 2].every((x) => x === 2)); // true
在非陣列物件上呼叫 every()
every() 方法讀取 this 的 length 屬性,然後訪問小於 length 的每個非負整數鍵屬性,直到它們都被訪問,或者 callbackFn 返回 false。
const arrayLike = {
length: 3,
0: "a",
1: "b",
2: "c",
3: 345, // ignored by every() since length is 3
};
console.log(
Array.prototype.every.call(arrayLike, (x) => typeof x === "string"),
); // true
規範
| 規範 |
|---|
| ECMAScript® 2026 語言規範 # sec-array.prototype.every |
瀏覽器相容性
載入中…