JavaScriptで文章の平均単語長を求める方法
今回は、空白文字で区切られた複数の単語を含む文字列を受け取り、その中に含まれるすべての単語の平均文字数(平均単語長)を算出し、小数点以下2桁に丸めて返すJavaScript関数を作成します。
アプローチ
この問題は次の手順で解決できます。
- 文字列全体の長さを取得する
- 文字列をスペースで分割して単語数を数える
- 文字列全体の長さからスペースの数を差し引き、単語の総文字数を求める
- 総文字数を単語数で割って平均値を計算し、toFixed()メソッドで小数点以下2桁に丸める
コード例
以下が実際の実装コードです。
const str = 'This sentence will be used to calculate average word length';
const averageWordLength = str => {
if(!str.includes(' ')){
return str.length;
};
const { length: strLen } = str;
const { length: numWords } = str.split(' ');
const average = (strLen - numWords + 1) / numWords;
return average.toFixed(2);
};
console.log(averageWordLength(str));
console.log(averageWordLength('test test'));
実行結果
コンソールには以下のように出力されます。
5.00
4.00
コードの解説
まず、includes()メソッドを使って、文字列にスペースが含まれているかどうかを確認しています。スペースが含まれていない場合、つまり単語が1つしかないときは、そのまま文字列の長さを返します。
スペースが含まれている場合は、split(' ')で文字列を分割して単語数を取得します。文字列全体の長さから「単語数 − 1」個のスペース分を引けば、実際の総文字数が求まります。これを単語数で割ることで平均単語長を算出し、toFixed(2)で小数点以下2桁に丸めた値を返しています。
-
JavaScriptで2つの配列に共通する部分配列の最大長を求める方法
問題の概要JavaScriptで、リテラル値からなる2つの配列 arr1 と arr2 を引数として受け取る関数を作成します。この関数は、両方の配列に共通して現れる部分配列(サブアレイ)の中で最も長いものの長さを返す必要があります。ここでの「部分配列」とは、元の配列から要素を連続した形で取り出したものを指します。順序が連続していなければならない点に注意してください。入力例const arr1 = [1, 2, 3, 2, 1]; const arr2 = [3, 2, 1, 4, 7];出力例const output = 3;解説この場合、最大長となる共通の部分配列は [3, 2, 1] です
-
JavaScriptで特定の長さを持つ部分配列の最大平均値を求める方法
問題概要整数の配列 arr を第1引数に、数値 num を第2引数として受け取るJavaScript関数を作成する必要があります。この関数の目的は、長さがちょうど num である連続する部分配列(サブアレイ)の中から、平均値が最大となるものを見つけ出し、その最大平均値を出力することです。入力例const arr = [1, 12, -5, -6, 50, 3]; const num = 4;出力例const output = 12.75;出力の解説このケースでは、求めるべき部分配列は [12, -5, -6, 50] です。これら4つの要素の合計は 51 となり、51 ÷ 4 = 12.75