【JavaScript】some関数の挙動を解説。応用でNGワードの処理

javascriptのsome関数について解説します。

スポンサーリンク

some()関数の挙動

some()関数は配列の各要素に対して指定されたコールバック関数を実行し、コールバック関数の戻り値が一度でもtrueとなった場合、some()関数自体もtrueを返します。逆に、すべての要素に対してコールバック関数の戻り値がfalseとなる場合には、some()関数はfalseを返します。

スポンサーリンク

some()関数を使ったサンプルコード

const numbers = [1, 2, 3, 4, 5];

const hasEvenNumber = numbers.some((num) => num % 2 === 0);

console.log(hasEvenNumber);  // true

この例では配列に偶数が含まれているのでsome関数はtrueを返します。

ここで気になるのはsome()関数はコールバックtrueを返したら自身もtureを返すという挙動なわけですが全然関係ない値を返した場合はどうなるのかということです。例えばコールバック真偽値以外を返した場合

コールバックが全然関係ない値を返す場合some()関数はどのような挙動になるのか

some()関数でコールバックが真偽値以外の値を返した場合でもエラーにはなりません。

関数が真偽値以外の値を返した場合、その値は内部的に真偽値に変換されます。

下記はコールバックで全然関係ない文字列を返す例です。

const numbers = [1, 2, 3, 4, 5];

const result = numbers.some(function(num) {
  return 'baasdfasd';  // 真偽値以外の値を返す
});

console.log(result);  // true

このようにresultはtrueになります。

some()を使用してNGワードが含まれていたらtrueを返す

some()関数を使えばテキストにNGワードが含まれているかチェックすることができます。

let ngwords = ['リンゴ', 'ゴリラ', 'ラッパ'];
let text = "リンゴはおいしいです。";

//テキストにngワードが含まれているかチェックする
let result = ngwords.some(ngword => text.includes(ngword));
console.log(result);  // true

ngワードの処理はfor文とかはつかってしまいがちですがsome関数を使うとわりとすっきりかくことができますね。

コメント

タイトルとURLをコピーしました