この記事ではJavaScriptの『everyメソッド』について、
every
メソッドとはevery
メソッドの構文every
メソッドの使い方- 配列内の全ての要素がある条件を満たしているかをテストする
- 配列Aの全ての要素が配列Bの各要素に含まれているかをテストする
- テスト関数(コールバック関数)内で
this
を使用してテストする
every
メソッドの特徴- 空のスロットに対しては処理をスキップする
- テスト関数が一度でも
false
を返せば、配列の反復処理が終了する - 空の配列のテストではどのような条件でも
true
を返す
などを分かりやすく説明するように心掛けています。ご参考になれば幸いです。
everyメソッドとは
every
メソッドは、配列の全ての要素がテスト関数を満たしていればtrue
を返すメソッドです。
every
メソッドは配列の各要素に対してテスト関数を実行します。テスト関数が全てtrue
を返せば、every
メソッドはtrue
を返します。テスト関数が1回でもfalse
を返せば、every
メソッドはfalse
を返します。
後ほどevery
メソッドの構文や使い方について詳しく説明しますが、まず以下に示す簡単なサンプルコードを見てみましょう。
const arr01 = [2, 4, 6];
const result01 = arr01.every((num) => num % 2 === 0);
console.log(result01); // true
const arr02 = [2, 3, 4];
const result02 = arr02.every((num) => num % 2 === 0);
console.log(result02); // false
上記のサンプルコードでは、配列内の全ての要素が偶数であるかをテストしています。arr01
は全ての要素が偶数なのでture
を返しますが、arr02
は配列内に奇数(3)が含まれているのでfalse
を返します。
everyメソッドとsomeメソッドの違い
every
メソッドは配列の各要素が全てテスト関数を満たしていればtrue
を返します。一方、some
メソッドは配列の各要素が1つでもテスト関数を満たしていればtrue
を返します。
続きを見るsome
メソッドについては下記の記事で詳しく説明しています。興味のある方は下記のリンクからぜひチェックをしてみてください。 【JavaScript】someメソッドの「使い方」などをわかりやすく解説!
everyメソッドの構文
every
メソッドの構文を以下に示します。
everyメソッドの構文
array.every(callbackFn[, thisArg])
array
はテスト対象の配列です。every
メソッドの引数と返り値を以下に示します。
引数
callbackFn
- 配列の各要素に対して実行するテスト関数です。
- 配列の各要素をテストし、テストに合格した場合には
true
を返します。そうでない場合にはfalse
を返します。 - テスト関数は以下の引数を渡すことができます(第1引数の
element
のみを渡して使用することが多いです)。element
: テスト実行中の要素index
: テスト実行中の要素のインデックスarray
:every
メソッドでテストしている配列
thisArg
(省略可能)callbackFn
を実行する際にthis
として使用される値です。
返り値(戻り値)
- テスト関数(
callbackFn
)が全てtrue
を返せば、every
メソッドはtrue
を返す。 - テスト関数(
callbackFn
)が1回でもfalse
を返せば、every
メソッドはfalse
を返す。
everyメソッドの使い方
every
メソッドについて、以下に示している様々な使い方をこれから説明します。
- 配列内の全ての要素がある条件を満たしているかをテストする
- 配列Aの全ての要素が配列Bの各要素に含まれているかをテストする
- テスト関数(コールバック関数)内でthisを使用してテストする
各使い方について順番に説明します。
配列内の全ての要素がある条件を満たしているかをテストする
以下のサンプルコードでは、every
メソッドを用いて、配列内のすべての要素が10より大きいかをテストしています。
const arr01 = [11, 12, 13];
const result01 = arr01.every((num) => num > 10);
console.log(result01); // true
const arr02 = [10, 11, 12, 13];
const result02 = arr02.every((num) => num > 10);
console.log(result02); // false
アロー関数を使わない場合には以下のようになります。
function isBiggerThan10(num) {
return num > 10;
}
const arr01 = [11, 12, 13];
const result01 = arr01.every(isBiggerThan10);
console.log(result01); // true
const arr02 = [10, 11, 12, 13];
const result02 = arr02.every(isBiggerThan10);
console.log(result02); // false
アロー関数を用いた方が、プログラムが短くなるのでオススメです。
配列Aの全ての要素が配列Bの各要素に含まれているかをテストする
以下のサンプルコードでは、every
メソッドを用いて、配列arrA
の全ての要素が配列arrB
の各要素に含まれているかをテストしています。
const arrA = [4, 5, 6];
const arrB = [1, 2, 3, 4, 5, 6, 7];
const result01 = arrA.every((element) => arrB.includes(element));
console.log(result01); // true
テスト関数(コールバック関数)内でthisを使用してテストする
every
メソッドのコールバック関数内でthis
を使用する場合、thisArg
パラメータを利用してコールバック関数内でのthis
の値を設定することができます。サンプルコードを以下に示します。
function isBiggerThanThreshold(num) {
return num > this.threshold;
}
const thresholdObj = { threshold: 10 };
const arr01 = [11, 12, 13];
const result01 = arr01.every(isBiggerThanThreshold, thresholdObj);
console.log(result01); // true
const arr02 = [10, 11, 12, 13];
const result02 = arr02.every(isBiggerThanThreshold, thresholdObj);
console.log(result02); // false
everyメソッドの特徴
every
メソッドの特徴を以下に示します。
- 空のスロットに対しては処理をスキップする
- テスト関数が一度でも
false
を返せば、配列の反復処理が終了する - 空の配列のテストではどのような条件でも
true
を返す
各特長について順番に説明します。
空のスロットに対しては処理をスキップする
every
メソッドは空のスロットに対しては処理をスキップします。サンプルコードを以下に示します。
// 空のスロットがある場合
const arr01 = [1, , 1];
const result01 = arr01.every((num) => num === 1);
console.log(result01); // true
// 空のスロットがない場合
const arr02 = [1, 2, 1];
const result02 = arr02.every((num) => num === 1);
console.log(result02); // false
以下のサンプルコードに示すようにテスト関数の第2引数(index
)を見ると、空の配列スロットに対しては処理がスキップされていることがよりわかると思います。
const arr01 = [1, , 1];
const result01 = arr01.every((num, index) => {
console.log('index:', index);
return num === 1;
});
console.log(result01);
// ログ出力
// index: 0
// index: 2
// true
テスト関数が一度でもfalseを返せば、配列の反復処理が終了する
every
メソッドはテスト関数が一度でもfalse
を返せば、配列の反復処理が終了します。サンプルコードを以下に示します。
const arr01 = [1, 2, 1];
const result01 = arr01.every((num, index) => {
console.log('index:', index);
return num === 1;
});
console.log(result01);
// ログ出力
// index: 0
// index: 1
// false
空の配列のテストではどのような条件でもtrueを返す
every
メソッドは空の配列のテストではどのような条件でもtrue
を返します。サンプルコードを以下に示します。
// 空配列の場合
const arr01 = [];
const result01 = arr01.every(() => false);
console.log(result01); // true
本記事のまとめ
この記事ではJavaScriptの『everyメソッド』について、以下の内容を説明しました。
every
メソッドとはevery
メソッドの構文every
メソッドの使い方- 配列内の全ての要素がある条件を満たしているかをテストする
- 配列Aの全ての要素が配列Bの各要素に含まれているかをテストする
- テスト関数(コールバック関数)内で
this
を使用してテストする
every
メソッドの特徴- 空のスロットに対しては処理をスキップする
- テスト関数が一度でも
false
を返せば、配列の反復処理が終了する - 空の配列のテストではどのような条件でも
true
を返す
お読み頂きありがとうございました。