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関数を使うとわりとすっきりかくことができますね。
コメント