言語
日本語
English

Caution

お使いのブラウザはJavaScriptが無効になっております。
当サイトでは検索などの処理に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』と出力されます。

概要

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

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

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

対応ブラウザ

Chrome Chrome
49 以降
全バージョンで対応しています
Firefox Firefox
57 以降
1 以前 ×
Safari Safari
18 以降
2 以前 ×
Edge Edge
80 以降
11 以前 ×
IE IE
11 以降
8 以前 ×
Opera Opera
48 以降
9 以前 ×
iOS Safari iOS Safari
18 以降
全バージョンで対応しています
Android Browser Android Browser
37 以降
4 以前 ×
Chrome Android Chrome Android
36 以降
17 以前 ×
Firefox Android Firefox Android
79 以降
3 以前 ×

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