【JavaScript】配列の任意の1つ以上の要素が条件に合致するか判定する【some】

【JavaScript】配列の任意の1つ以上の要素が条件に合致するか判定する【some】

はじめに

コジマです。

配列のどれか1つ以上の要素が条件に合致するか判定したいな、と思うときありますよね。

例えば、5つの要素のうち1つでも100以上だったらエラーにしたい。
みたいな。

パッと考えられるのはforEachで回して1個以上条件に合致したら…
という方法かと思います。

サンプルを見てみましょう。

forEachのサンプル

/** 100以上の要素があるとエラーとなるプログラム */
// 103がエラーとなる
const numbers = [10, 34, 88, 103, 51]

// エラーがある(条件に合致する)ときtrueとなる
// falseで初期化しておく。
let errFlag = false
numbers.forEach(e => {
  // エラーがあればフラグ立てる
  if(e >= 100){
    errFlag = true
  }
})

if(errFlag){
  console.log('エラーです。') // こちらが出力される
}else{
  console.log('OKです。')
}

これでもいいのですが、some関数を使うともっとすっきり書くことができます。

someのサンプル

/** 100以上の要素があるとエラーとなるプログラム */
// 103がエラーとなる
const numbers = [10, 34, 88, 103, 51]

// エラーがある(条件に合致する)ときtrueとなる
let errFlag = numbers.some(e => 
  e >= 100
)

if(errFlag){
  console.log('エラーです。') // こちらが出力される
}else{
  console.log('OKです。')
} 

さいごに

someの公式リファレンス貼っておきます。
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/some

引き出しは多い方がいいですよね。

この記事を面白いまたは役に立ったと思ってくれた方は是非私のTwitter(@kojimanotech)を
フォローしてくれたらうれしいです!

以上、コジマでした。


JavaScriptカテゴリの最新記事