Array.prototype.every()

Baseline 已廣泛支援

此特性已相當成熟,可在許多裝置和瀏覽器版本上使用。自 ⁨2015 年 7 月⁩以來,各瀏覽器均已提供此特性。

every() 方法用於 Array 例項,如果陣列中有一個元素不滿足提供的測試函式,則返回 false。否則,它返回 true

試一試

const isBelowThreshold = (currentValue) => currentValue < 40;

const array1 = [1, 30, 39, 29, 10, 13];

console.log(array1.every(isBelowThreshold));
// Expected output: true

語法

js
every(callbackFn)
every(callbackFn, thisArg)

引數

callbackFn

一個用於在陣列的每個元素上執行的函式。它應該返回一個真值(truthy value)來表示該元素透過測試,否則返回一個假值(falsy value)。該函式將使用以下引數呼叫:

element

陣列中正在處理的當前元素。

index

陣列中正在處理的當前元素的索引。

array

呼叫 every() 的陣列。

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。

js
function isBigEnough(element, index, array) {
  return element >= 10;
}
[12, 5, 8, 130, 44].every(isBigEnough); // false
[12, 54, 18, 130, 44].every(isBigEnough); // true

檢查一個數組是否是另一個數組的子集

下面的示例測試一個數組中的所有元素是否都存在於另一個數組中。

js
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() 檢查陣列是否嚴格遞增。

js
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() 不會在空槽上執行其謂詞。

js
console.log([1, , 3].every((x) => x !== undefined)); // true
console.log([2, , 2].every((x) => x === 2)); // true

在非陣列物件上呼叫 every()

every() 方法讀取 thislength 屬性,然後訪問小於 length 的每個非負整數鍵屬性,直到它們都被訪問,或者 callbackFn 返回 false

js
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

瀏覽器相容性

另見