Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

JavaScript辞典

  1. トップページ
  2. JavaScript辞典
  3. 配列.some() / every()

配列.some() / every()対応: ES5(ECMAScript 2009)

配列の要素が条件を満たすかどうかを判定するメソッドです。『some()』は1つでも満たせば『true』、『every()』はすべて満たせば『true』を返します。

構文
// 1つでも条件を満たす要素があるかを判定します。
var result = 配列.some(function(要素, インデックス, 配列) {
	return 条件式;
});

// すべての要素が条件を満たすかを判定します。
var result = 配列.every(function(要素, インデックス, 配列) {
	return 条件式;
});
メソッド一覧
メソッド概要
some(関数)配列の要素のうち、1つでも条件を満たすものがあれば『true』を返します。すべての要素が条件を満たさない場合は『false』を返します。空の配列に対しては常に『false』です。
every(関数)配列のすべての要素が条件を満たせば『true』を返します。1つでも条件を満たさないものがあれば『false』を返します。空の配列に対しては常に『true』です。
サンプルコード
var scores = [65, 80, 42, 90, 75];

// 90点以上のスコアが1つでもあるかを判定します。
var hasExcellent = scores.some(function(score) {
	return score >= 90;
});
console.log(hasExcellent); // 『true』と出力されます。

// すべてのスコアが50点以上かを判定します。
var allPassed = scores.every(function(score) {
	return score >= 50;
});
console.log(allPassed); // 『false』と出力されます。42が条件を満たしません。

// フォームの入力チェックに活用する例です。
var fields = ["太郎", "taro@example.com", ""];
var hasEmpty = fields.some(function(field) {
	return field === "";
});
console.log(hasEmpty); // 『true』と出力されます。空の項目があります。

var allFilled = fields.every(function(field) {
	return field !== "";
});
console.log(allFilled); // 『false』と出力されます。
実行結果
true    // some: 90点以上が1つある
false   // every: 42が50点未満
true    // some: 空の項目がある
false   // every: すべて入力済みではない
概要

『配列.some()』と『配列.every()』は配列全体に対する条件判定を行うメソッドです。どちらも条件が確定した時点でループを中断する「短絡評価」を行います。『配列.some()』は『true』を返す要素が見つかった時点で、『配列.every()』は『false』を返す要素が見つかった時点で残りの要素の処理をスキップするため、大きな配列でも効率的に動作します。

フォームのバリデーションでは、すべての項目が入力されているかの確認に『配列.every()』、未入力の項目があるかの検出に『配列.some()』が活用できます。権限チェックや条件付き処理の分岐にも便利です。

空の配列に対する結果には注意が必要です。『配列.some()』は空の配列に対して常に『false』、『配列.every()』は空の配列に対して常に『true』を返します。これは数学の論理学における「空虚な真」と呼ばれる性質に基づいています。条件に一致する要素そのものを取得したい場合は『配列.find() / 配列.filter()』を使用してください。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。