JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

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桁に丸めた値を返しています。

  1. 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] です

  2. 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