配列処理(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);