Array.every

Did you know that you can read content offline by using one of these tools? If you would like to read offline MDN content in another format, let us know by commenting on Bug 665750.

Dash App

概要

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

Array のメソッド
実装されたバージョン JavaScript 1.6 (Gecko 1.8b2 以降)
ECMAScript エディション ECMAScript 5th Edition

構文

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

引数

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

説明

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

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

every に thisObject パラメータが与えられると、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.call は Function.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
基本サポート ? ? ? ? ? ?

関連情報

タグ (4)