Core JavaScript 1.5 Reference:Global Objects:Array:some
出典: MDC
目次 |
[編集] 概要
与えられた関数によって実行されるテストに合格する要素が配列の中にあるかどうかをテストします。
| Array のメソッド | |
| 実装されたバージョン: | JavaScript 1.6 (Gecko 1.8b2 以降) |
| ECMAScript バージョン: | なし |
[編集] 構文
var someElementPassed = array.some(callback[, thisObject]);
[編集] パラメータ
-
callback - 各要素に対してテストを実行する関数。
-
thisObject -
callbackを実行するときにthisとして使用するオブジェクト。
[編集] 説明
some は、与えられた callback 関数を、配列に含まれる各要素に対して一度ずつ、callback が真の値を返す要素が見つかるまで呼び出します。 真の値を返す要素が見つかると、some メソッドはただちに true を返します。 見つからなかった場合、some は false を返します。 callback は値が代入されている配列のインデックスに対してのみ呼び出されます。つまり、すでに削除されたインデックスや、まだ値が代入されていないインデックスに対しては呼び出されません。
callback は、要素の値、要素のインデックス、走査されている Array オブジェクトという 3 つの引数をともなって呼び出されます。
some に thisObject パラメータが与えられると、callback の呼び出しのたびにそのオブジェクトが this として使用されます。thisObject が与えられないか null だと、callback に結び付けられたグローバルオブジェクトが代わりに使用されます。
some は呼び出された配列を変化させません。
some によって処理される要素の範囲は、callback が最初に呼び出される前に設定されます。some の呼び出しが開始された後に追加された要素に対しては、callback は実行されません。既存の配列要素が変更されたり、削除された場合、callback に渡される値は some がそれらを訪れた時点での値になり、削除された要素には訪問されません。
[編集] 互換性
some は ECMA-262 標準に対する JavaScript 拡張なので、ECMA-262 標準の他の実装では存在しない場合があります。次のコードをスクリプトの先頭に挿入すると、some がネイティブでサポートされていない ECMA-262 実装でも some を使用できるようになります。これは Firefox および SpiderMonkey で使われているアルゴリズムとまったく同じものです。
if (!Array.prototype.some)
{
Array.prototype.some = function(fun /*, thisp*/)
{
var len = this.length;
if (typeof fun != "function")
throw new TypeError();
var thisp = arguments[1];
for (var i = 0; i < len; i++)
{
if (i in this &&
fun.call(thisp, this[i], i, this))
return true;
}
return false;
};
}
[編集] 例
[編集] 例: 配列のすべての要素の大きさをテストする
次の例は、配列の中に 10 よりも大きい要素があるかどうかをテストします。
function isBigEnough(element, index, array) {
return (element >= 10);
}
var passed = [2, 5, 8, 1, 4].some(isBigEnough);
// passed は false
passed = [12, 5, 8, 1, 4].some(isBigEnough);
// passed は true