.every()
every()メソッドは、提供された関数によってテストが実装され、配列内の各要素の全てがそのテストにパスするかを確認します。
文法
arr.every(callback[, thisArg])
引数 | 説明 |
---|---|
callback | 各要素をテストする関数です。 |
[thisArg] |
callbackの関数実行時に、this として使用する値です。
|
説明
every
メソッドは、callback
がfalse値(真偽値に変換された際にfalseになる値)を返すものが見つかるまで、
配列の各要素に対し、提供されたcallback
の関数を実行します。
そのような要素が見つかると、every
メソッドは即座にfalseを返します。
そうでは無く、もし全ての要素に対してcallback
がtrueを返す場合は、every
はtrueを返します。
callback
は値が割り当てられている配列のインデックでのみ実行され、
値が割り当てられていない、または削除されてしまったインデックスでは実行されません。
callback
は、要素の値、要素のインデックス番号、現在巡っている配列オブジェクトの、
3つの引数を使用して実行されます。
もしevery
にthisArg
パラメーターが提供されると、
callback
実行時に、this
値として使用するものとして、これが渡されます。
callback
によって最終的に供給されるthis
値は、
関数によるthisの取り扱いの通常の規則に沿って決定されます。(翻訳に自信なし)
every
は、呼び出し元の配列を変更しません。
コールバックの最初の実行前に、every
によって設定された要素の範囲が処理されます。
every
が呼び出された後に追加された要素は、callback
の対象にはなりません。
もし配列内の要素が変更された場合は、every
がそれらの値を参照する時の値でcallback
に渡され、
削除された要素であれば、その渡す対象から外されます。
every
は数学での"for all"数量詞のような振る舞いをします。
特に空の配列では、trueを返します。
(これは空設定(empty set)の全ての要素は、与えられた任意の条件を満たす無為のtrue(vacuously true)です。)
例
例: 全ての配列要素のサイズ(長さ)を確認
下記の例は、配列内の全ての要素のサイズが10以上であるかをテストします。
function isBigEnough(element, index, array) {
return (element >= 10);
}
var passed = [12, 5, 8, 130, 44].every(isBigEnough);
// 結果はfalseになります。
passed = [12, 54, 18, 130, 44].every(isBigEnough);
// 結果はtrueになります。
Polyfill
every
は、5thエディションのECMA-262標準で追加されたため、
その他の標準実装には提供されていないかもしれません。
あなたのスクリプトが始まる前に下記のコードを挿入することで、
ネイティブでevery
がサポートされない環境でも、every
が使用可能になります。
このアルゴリズムは、5thエディションのECMA-262の正確な仕様の1つであり、
ObjectとTypeErrorはそれらの元の値を持つとみなし、
fun.call
はFunction.prototype.call
の元の値を評価します。(翻訳に自信なし)
if (!Array.prototype.every)
{
Array.prototype.every = function(fun /*, thisArg */)
{
'use strict';
if (this === void 0 || this === null)
throw new TypeError();
var t = Object(this);
var len = t.length >>> 0;
if (typeof fun !== 'function')
throw new TypeError();
var thisArg = arguments.length >= 2 ? arguments[1] : void 0;
for (var i = 0; i < len; i++)
{
if (i in t && !fun.call(thisArg, t[i], i, t))
return false;
}
return true;
};
}
仕様
ブラウザ互換性
機能 | Chrome | Firefox (Gecko) |
IE | Opera | Safari |
---|---|---|---|---|---|
基本 | ◯ | 1.5 (1.8) | 9 | ◯ | ◯ |
機能 | Android | Chrome for Android |
Firefox Mobile |
IE Mobile |
Opera Mobile |
Safari Mobile |
---|---|---|---|---|---|---|
基本 | ◯ | ◯ | 1.0 (1.8) | ◯ | ◯ | ◯ |
関連項目
© 2017 Mozilla Contributors
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
このページは、ページトップのURL先のMozilla Developer Network(以下、MDN)のコンテンツを翻訳した内容を基に構成されています。 構成について異なる点も含まれますので、下記の項目を確認し、必要に応じて元のコンテンツをご確認ください。 もし、誤訳などの間違いを見つけましたら、 @tomofまで教えていただければ幸いです。
- 特定のブラウザに特化しすぎている情報やあまりにも古い情報、 または試験的に導入されているようなAPIや機能については、省略していることがあります。
- 例やデモについて、実際にページ内で動作させる関係で一部ソースコードを変更している場合や、 その例で使用しているコンテンツの単語や文章などを日本人向けに変更しいてる場合があります。
- MDNの更新頻度が高いため、元のコンテンツと比べ情報が古くなっている可能性があります。
- "訳注:"などの断わりを入れた上で、日本人向けの情報の追記を行っている事があります。