JavaScriptで配列内に含まれる特定の単語の出現回数をすべて検索する方法
JavaScriptでは、第一引数にリテラルの配列、第二引数に文字列を受け取る関数を作成することが求められます。この関数は、第二引数で指定された文字列が配列内の各要素に含まれるかどうかを判定し、その出現回数を返す必要があります。
たとえば、配列内の各文字列に対して「部分一致」で検索を行い、指定した単語が含まれる要素の総数をカウントします。
実装例
この処理を実装したコードは以下のとおりです。
const arr = ["word", "a word", "another word"];
const query = "word";
const findAll = (arr, query) => {
let count = 0;
count = arr.filter(el => {
return el.indexOf(query) != -1;
}).length;
return count;
};
console.log(findAll(arr, query));出力結果
コンソールには次のように出力されます。
3
コードの解説
このコードの仕組みを順番に見ていきましょう。
まず、filter()メソッドは配列の各要素に対してコールバック関数を実行し、条件を満たす要素のみで構成される新しい配列を返します。ここでの条件はel.indexOf(query) != -1です。indexOf()は文字列が見つからない場合に-1を返すため、「-1以外であれば該当する文字列が含まれている」と判断できます。
フィルタリング後の配列のlengthプロパティを参照することで、該当する要素の個数、つまり出現回数を取得できます。
より簡潔な書き方:includes()を使う方法
ES2015以降では、includes()メソッドを使うことで、さらに読みやすいコードになります。
const findAll = (arr, query) => arr.filter(el => el.includes(query)).length;
includes()は指定した文字列が含まれていればtrue、含まれていなければfalseを返すため、意図がひと目でわかる直感的な記述になります。どちらの方法でも同じ結果が得られますので、チームのコーディング規約や可読性の観点から選択するとよいでしょう。
-
JavaScriptのfind()関数とは?配列から条件に合う最初の要素を取得する方法
JavaScriptのfind()メソッドは、配列の中から指定した条件を満たす最初の要素の値を返すために使用されます。条件を満たす要素がひとつも存在しない場合は、undefinedが返されます。find()は配列全体を走査しますが、条件に一致する要素が見つかった時点で処理を終了するため、効率的に目的の要素を取得できるのが特徴です。find()の基本構文array.find(function(val, index, arr), thisValue)パラメータの説明function:各要素に対して実行されるテスト関数val:現在処理中の要素の値(必須)index:現在処理中の要素のインデックス番号
-
JavaScriptのArray.prototype.find()メソッドとは?使い方をサンプルコードで解説
Array.prototype.find() メソッドは、配列の中から指定した条件(テスト関数)を満たす最初の要素の値を返します。 条件に一致する要素が見つかった時点で検索を終了するため、大きな配列でも効率的に動作します。また、どの要素も条件を満たさなかった場合は undefined を返すという点も重要な特徴です。 find()メソッドの基本構文 arr.find(callback(element[, index[, array]])[, thisArg]) callback:各要素に対して実行されるテスト関数。true を返した要素が結果となります。 thisArg(省略可):callb