【JavaScript】some()で配列に条件を満たす要素が存在するか判定する
※本ページのリンクにはプロモーションが含まれています。
こんにちは、Ryohei(@ityryohei)です!
本記事では、JavaScriptのsomeメソッドを使って、配列に条件を満たす要素が存在するか判定する方法をご紹介しています。
配列に条件を満たす要素が存在するか判定したいだけど、良い方法ないかな?
上記の疑問にお答えします。
では、解説していきます。someメソッドとは
some
メソッドはArrayオブジェクトのメソッドです。some
メソッドは、関数で指定されたテストを実行した結果、配列に1つでもテストに合格する要素が存在すればtrue
を、存在しなければfalse
を返します。そのため配列に1つでも条件を満たす要素の確認に有効なメソッドです。
配列に条件を満たす要素が存在するか判定する
someメソッドを使っていくつかテストを実施してみます。テストケースとして数値と文字列を使った処理を作成し、実行結果を確認してみたいと思います。
数値の判定
test
関数に条件を設定し、some
メソッドで配列の要素をテストします。
const array = [1, 3, 5, 7, 9]; const test = num => num > 8; console.log(array.some(test)); //true
上記例では、配列に8
より大きい数字が存在するかを検証しています。配列に9
の値が存在するため実行結果はtrue
となります。
const array = [1, 3, 5, 7, 9]; const test = num => num > 10; console.log(array.some(test)); //false
上記例では、配列に10
より大きい値が存在するかを検証しています。配列に10
より大きい値は存在しないため、実行結果はfalse
となります。
その他比較演算子で条件を指定することが可能です。
文字列の判定
配列に指定した文字列を持つ要素が存在するか判定します。
const array = ['abc', 'def', 'ghi', 'jkl', 'mno']; const test = str => str === 'ghi'; console.log(array.some(test)); //true
上記例では、配列の各要素と文字列のghiが等しいかを判定しています。配列にghi
を持つ要素が存在するため、実行結果はtrue
です。
もし正規表現を使って配列の要素を判定したい場合は、RegExpで下記のように置き換えると良いかもしれません。
const array = ['abc', 'def', 'ghi', 'jkl', 'mno']; const regexp = new RegExp(/h/); const test = str => regexp.test(str); console.log(array.some(test)); //true
上記例では、配列にh
の文字列を持つ要素が存在するか判定しています。添字2番目に対象の文字列が存在するため、実行結果はtrue
となります。
他にも様々なケースで配列に条件を満たす要素が存在するかを判定するができます。
最後に
本記事では、配列から条件を満たす要素の判定について、いくつかサンプルを使ってご紹介してきました。以前は制御構文(if文やfor文)を組み合わせて配列に要素が存在するか判定していましたが、some
メソッドを使えばかなりすっきりした記述になります。配列の要素を判定する際に使ってみてくださいね。
以上、JavaScriptのsomeメソッドで、配列に条件を満たす要素が存在するか判定する方法のご紹介でした!
JavaScriptを基礎からしっかりと学びたい方へ
下記の参考書がおすすめです。私がJavaScript入門時に購入した書籍で、基礎から応用まで多様なサンプルを用いて解説されています。ページ数は多いですが、内容が伴っているのですらすら読めます。腰を据えて学びたい方に最良の一冊となっています。