配列処理(some,everyメソッド)

はじめに

今回の記事は配列の便利メソッドであるsomeメソッド、everyメソッドについてTypeScriptのコードで以下記事を書いていきます。

someメソッド、everyメソッドの基本

someメソッド(everyメソッドも同様)の引数であるコールパック関数の引数は、mapメソッド同様最大3つの引数を設定できます。
第1引数は、配列の一つ一つの要素。第2引数は、index(0からの添字)。第3引数は配列自体。第2,3引数はめったに使われないと思います。

someメソッドの役割は、「与えた条件を満たす要素がひとつでもあるか」を真偽値で返すことにあります。

またeveryメソッドの役割は「与えた条件をすべての要素が満たすか」を真偽値で返すことにあります。

ポイントはどちらもBooleanが返り値ということです。

以下で確認しましょう。

const arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];

const reultOfSome = arr.some((num) => num !== 0);

const resultOFEvery = arr.every((num) => num >= 2);

console.log(reultOfSome); //true
console.log(resultOFEvery); //false

some,everyの例題

①アンケートを実施した結果がusersという連想配列に格納されています。ユーザー全員が回答済みかどうかを確認し、hasSubmitted変数に結果(trueかfalse)を格納しなさい。

type Users = {
  id: number;
  hasSubmitted: Boolean;
}[];

const users: Users = [
  { id: 2, hasSubmitted: true },
  { id: 3, hasSubmitted: false },
  { id: 4, hasSubmitted: true },
];

解答

const hasSubmitted = users.every(({ hasSubmitted }) => hasSubmitted);