Join MDN and developers like you at Mozilla's View Source conference, 12-14 September in Berlin, Germany. Learn more at https://viewsourceconf.org

Array.prototype.every()

概要

与えられた関数によって実行されるテストに配列のすべての要素が合格するかどうかをテストします。

構文

allPassed = array.every(callback[, thisObject]);

引数

callback
各要素に対してテストを実行する関数。
thisObject
callback を実行するときに this として使用するオブジェクト。

説明

every は、与えられた callback 関数を、配列に含まれる各要素に対して一度ずつ、callback が偽の値を返す要素が見つかるまで呼び出します。 偽の値を返す要素が見つかると、every メソッドはただちに false を返します。 callback がすべての要素に対して真の値を返した場合、everytrue を返します。 callback は値が代入されている配列のインデックスに対してのみ呼び出されます。つまり、すでに削除されたインデックスや、まだ値が代入されていないインデックスに対しては呼び出されません。

callback は、要素の値、要素のインデックス、走査されている Array オブジェクトという 3 つの引数をともなって呼び出されます。

everythisObject パラメータが与えられると、callback の呼び出しのたびにそのオブジェクトが this として使用されます。thisObject が与えられていないか null の場合は、callback に結び付けられたグローバルオブジェクトが代わりに使用されます。

every は呼び出された配列を変化させません。

every によって処理される要素の範囲は、callback が最初に呼び出される前に設定されます。every の呼び出しが開始された後に追加された要素に対しては、callback は実行されません。既存の配列要素が変更されたり、削除された場合、callback に渡される値は every がそれらを訪れた時点での値になり、every が削除された要素を訪問することはありません。

every は、数学における「∀ (すべての / for all)」記号と同様のふるまいをします。具体的に言うと、every は空の配列に対しては true を返します。(空集合のすべての要素が与えられた任意の条件を満たすことは空虚に真 (vacuously true)です。)

互換性

every はごく最近 ECMA-262 標準 に追加されたメソッドであり、規格外の実装には存在しない場合があります。次のコードをスクリプトの先頭に挿入すると、ネイティブでサポートされていない実装でも every を使用できるようになります。このアルゴリズムは ECMA-262 第 5 版で指定されたアルゴリズムとまったく同じものです。TypeError はそれらのオリジナルの値を持ち、また、それらの fun.callFunction.prototype.call のオリジナルの値として評価されます。

if (!Array.prototype.every)
{
  Array.prototype.every = function(fun /*, thisp */)
  {
    "use strict";

    if (this == null)
      throw new TypeError();

    var t = Object(this);
    var len = t.length >>> 0;
    if (typeof fun != "function")
      throw new TypeError();

    var thisp = arguments[1];
    for (var i = 0; i < len; i++)
    {
      if (i in t && !fun.call(thisp, t[i], i, t))
        return false;
    }

    return true;
  };
}

例: 全ての配列要素の大きさをテストする

次の例は、配列内のすべての要素が 10 よりも大きいかどうかテストします。

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

ブラウザ実装状況

Kangax's compat tables に基づく。

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート (有) (有) 9 (有) (有)
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート ? ? ? ? ? ?

関連情報

ドキュメントのタグと貢献者

 このページの貢献者: teoli, ethertank, Potappo, Shoot
 最終更新者: teoli,