.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の更新頻度が高いため、元のコンテンツと比べ情報が古くなっている可能性があります。
- "訳注:"などの断わりを入れた上で、日本人向けの情報の追記を行っている事があります。