SYNCERのロゴ
アイキャッチ画像

Array.prototype.every() - 配列の全ての要素が条件を満たすか調べる

Array.prototype.every()は、配列の全ての要素が、指定した条件を満たしているか否かを確認するメソッドです。1つでも条件を満たしていない要素があれば値はfalseとなる、All or Nothingのチェックです。

概要

名前
every
所属
Array.prototype
仕様書
https://tc39.github.io/ecma262/#sec-array.prototype.every

説明

Array.prototype.every ( callbackfn [ , thisArg ] )

第1引数(callbackfn)にチェックをするためのコールバック関数を指定します。このコールバック関数がtrueを返せば条件をクリア、それ以外なら条件を満たしていないと判断されます。配列の全ての要素がこのコールバック関数にかけられ、1つでも条件を満たさない要素がある時点で結果がfalseとなり処理が終わります。コールバック関数は、値、インデックス番号、配列そのもの、の3つの引数を受け取ります。

第2引数(thisArg)を指定すると、それがコールバック関数内におけるthisの値となります。省略した場合、thisの値はundefinedです。

function callbackfn ( value, index, array ) {
	return true ;
}

チュートリアル

例えば、配列の全ての要素が3よりも大きいか、というテーマでArray.prototype.every()を利用してみます。コールバック関数は、引数で受け取った値(value)が3より大きければ条件を満たすのでtrue、それ以外なら条件を満たさないのでfalseを返すようになっています。

var array = [ 4, 6, 8, 7, 9, 10 ] ;

var checkFunc = function ( value, index, sourceArray ) {
	if( value > 3 ) {
		return true ;

	} else {
		return false ;

	}
}

array.every( checkFunc ) ;	// true

処理は内部で次のように繰り返されます。仮に途中で結果がfalseの要素があった場合、そこで処理は終了し、Array.prototype.every()の結果はfalseとなります。

checkFunc( 4, 0, array ) ;	// true
checkFunc( 6, 1, array ) ;	// true
checkFunc( 8, 2, array ) ;	// true
checkFunc( 7, 3, array ) ;	// true
checkFunc( 9, 4, array ) ;	// true
checkFunc( 10, 5, array ) ;	// true

デモ

Array.prototype.every()のデモです。

<!-- このコードは編集できます。 -->

<!DOCTYPE html>
<html>
<head>
	<style>
body {
	white-space: pre-wrap ;
}
	</style>
</head>
<body>
<script>
/** try it! **/
var callbackfn = function ( value, index, sourceArray ) {
	if ( value > 6 ) {
		return true ;
	} else {
		return false ;
	}
}

var a = [ 4, 13, 8, 3, 5, 9, ].every( callbackfn ) ;
var b = [ 11, 8, 2, 7, 8, 9, ].every( 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>

サポート状況

ChromeFirefoxSafariEdgeIEOperaiOS SafariAndroid
9+
  • Twitterでシェア
  • Facebookでシェア
  • Google+でシェア
  • はてなブックマークでシェア
  • pocketに保存
  • LINEでシェア
更新履歴
2017年9月26日 (火)
コンテンツを公開しました。