.some()
some()メソッドは配列内の要素が提供された関数によって実装されるテストをパスするか否かをテストします。
文法
arr.some(callback[, thisArg])
引数 | 説明 |
---|---|
callback | 各要素をテストする関数を指定します。 |
thisArg |
callback 実行時にthis として使用する値を指定します。
|
説明
some
は、callback
関数がtrue値を返すものが見つかるまで、
各配列内の各要素をcallback
関数を実行します。
もし該当する要素が見つかれば、some
は即座にtrue
を返し、
そうで無ければfalse
を返します。
callback
は値が割り当てられた配列のインデックスでのみ実行され、
削除または値が割り当てられていないインデックスでは実行されません。
callback
は、要素の値、要素のインデックス、巡っている配列自身の3つの引数を使用して実行されます。
some
へthisArg
パラメーターが提供された場合、
callback
実行時に、そのthis
値として使用されるものとして渡されます。
提供されなければ、undefined
値がthis
として渡されます。
callback
によって最終的に供給されるthis
値は、
関数によるthisの取り扱いの通常の規則に沿って決定されます。
some
は呼び出し元の配列を変更しません。
some
によって処理される要素の範囲は、callback
の最初の呼び出しの直前に設定されます。
some
の呼び出しが行われた後に追加された要素は、callback
の対象になりません。
もし、対象とならない要素がcallback
によって変更された場合、
そのcallback
に渡される値は、some
がその要素のインデックスに訪れた時の値になり、
削除されていれば、その要素は対象外になります。(翻訳に自信なし)
例
例: 配列要素の値を検証
下記のサンプルは、配列内のいずれかの要素が10以上であるかを検証しています。
function isBigEnough(element, index, array) {
return (element >= 10);
}
var passed = [2, 5, 8, 1, 4].some(isBigEnough);
// 結果: false
passed = [12, 5, 8, 1, 4].some(isBigEnough);
// 結果: true
Polyfill
some
は、5thエディションのECMA-262標準に追加されたため、
全ての標準実装に提供されていないかもしれません。
あなたのスクリプトが始まる前に下記のコードを挿入することで、
ネイティブにサポートされていない場合に、some
が使用出来るようになります。
このアルゴリズムは5thエディションのECMA-262標準の仕様と一致するもので、
Object
、TypeError
はそれらの元の値、
fun.call
はFunction.prototype.callの元の値を評価するものとみなします。
if (!Array.prototype.some)
{
Array.prototype.some = 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 true;
}
return false;
};
}
仕様
ブラウザ互換性
機能 | 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の更新頻度が高いため、元のコンテンツと比べ情報が古くなっている可能性があります。
- "訳注:"などの断わりを入れた上で、日本人向けの情報の追記を行っている事があります。