Array.prototype.some() - 配列に条件を満たす要素が1つでもあるか確認する
Array.prototype.some()は、配列のいずれかの要素が指定した条件を満たしているか否かを確認するメソッドです。1つでも条件を満たしている要素があれば、trueを返します。
概要
説明
Array.prototype.some ( callbackfn [ , thisArg ] )
第1引数(callbackfn)にチェックをするためのコールバック関数を指定します。このコールバック関数がtrueを返せば条件をクリア、それ以外なら条件を満たしていないと判断されます。配列の全ての要素がこのコールバック関数にかけられ、1つでも条件を満たす要素がある時点で結果がtrueとなり処理が終わります。コールバック関数は、値、インデックス番号、配列そのもの、の3つの引数を受け取ります。
第2引数(thisArg)を指定すると、それがコールバック関数内におけるthisの値となります。省略した場合、thisの値はundefinedです。
function callbackfn ( value, index, array ) {
return true ;
}
チュートリアル
例えば、配列に3よりも大きい要素が存在するか、というテーマでArray.prototype.some()を利用してみます。コールバック関数は、引数で受け取った値(value)が3より大きければ条件を満たすのでtrue、それ以外なら条件を満たさないのでfalseを返すようになっています。
var array = [ 2, 1, -5, 5, 2, -10 ] ;
var checkFunc = function ( value, index, sourceArray ) {
if( value > 3 ) {
return true ;
} else {
return false ;
}
}
array.some( checkFunc ) ; // true
処理は内部で次のように繰り返されます。trueが1つでもあった時点でメソッドの返り値が決定して処理が終了します。
checkFunc( 2, 0, array ) ; // false
checkFunc( 1, 1, array ) ; // false
checkFunc( -5, 2, array ) ; // false
checkFunc( 5, 3, array ) ; // true (ここで終了)
checkFunc( 2, 4, array ) ; // false
checkFunc( -10, 5, array ) ; // false
デモ
Array.prototype.some()のデモです。
<!-- このコードは編集できます。 -->
<!DOCTYPE html>
<html>
<head>
<style>
body {
white-space: pre-wrap ;
}
</style>
</head>
<body>
<script>
/** try it! **/
var callbackfn = function ( value, index, sourceArray ) {
if ( value > 3 ) {
return true ;
} else {
return false ;
}
}
var a = [ 2, 1, -5, 5, 2, -10 ].some( callbackfn ) ;
var b = [ -3, 1, -10, 2, 1, ].some( callbackfn ) ;
/** try it! **/
var results = { a:a, b:b, } ;
for( var name in results ) {
console.log( name, results[name] ) ;
document.body.appendChild( new Text( name + " = " + JSON.stringify( results[name] ) + "\n" ) ) ;
}
</script>
</body>
</html>
サポート状況
Chrome | Firefox | Safari | Edge | IE | Opera | iOS Safari | Android |
---|---|---|---|---|---|---|---|
● | ● | ● | ● | ● 9+ | ● | ● | ● |
関連記事
- Array
- Arrayは配列を取り扱うための機能を備えたオブジェクトです。
- Array.prototype.find()
- Array.prototype.find()は、配列から条件を満たす値を取得するメソッドです。前方から後方にかけて検索し、条件を満たす一番最初の要素だけが返ります。条件を満たす要素が1つもない場合、undefinedが返ります。なお、findIndex()は、値ではなく、インデックス番号が返ります。
- Array.prototype.splice()
- Array.prototype.splice()は、配列の一部を置換するメソッドです。配列の一部を「削除」して、その位置に新しく要素を「挿入」します。元の配列を変更します。
- Array.prototype.sort()
- Array.prototype.sort()は、配列を任意のルールでソートするメソッドです。ソート後の配列を返しますが、元の配列が変更されています。