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

JavaScriptで文字列から指定した長さより長い単語を抽出して配列として返す方法


問題

単語の並んだ文(文字列)と数値を受け取り、その数値で指定された長さよりも文字数が多い単語をすべて抽出し、配列として返すJavaScript関数を作成する必要があります。

入力

const str = 'this is an example of a basic sentence';
const num = 4;

出力

const output = [ 'example', 'basic', 'sentence' ];

これは、元の文の中で文字数が4より大きい単語が「example」「basic」「sentence」の3つしか存在しないためです。

実装例

以下がそのコードです。

const str = 'this is an example of a basic sentence';
const num = 4;
const findLengthy = (str = '', num = 1) => {
    const strArr = str.split(' ');
    const res = [];
    for(let i = 0; i < strArr.length; i++){
        const el = strArr[i];
        if(el.length > num){
            res.push(el);
        };
    };
    return res;
};
console.log(findLengthy(str, num));

出力

[ 'example', 'basic', 'sentence' ]

コードの解説

まず、split(' ')メソッドを使って文をスペースで区切り、単語ごとの配列に変換します。続いてforループで各単語を1つずつ取り出し、lengthプロパティで文字数を確認します。文字数が引数で渡された数値より大きい場合のみ、結果格納用の配列に追加していきます。最後に、条件を満たした単語だけが入った配列を返しています。

filter()メソッドを使ったより簡潔な書き方

同じ処理は、配列が持つfilter()メソッドを利用することで、さらに短く読みやすいコードとして記述できます。

const findLengthy = (str = '', num = 1) =>
  str.split(' ').filter(word => word.length > num);

console.log(findLengthy(str, num));
// [ 'example', 'basic', 'sentence' ]

この書き方では中間変数や明示的なループが不要になり、「スペースで分割し、条件に合う単語だけを残す」という処理の意図がひと目で伝わります。実務ではこちらのスタイルが好まれることも多いでしょう。

  1. JavaScriptで各単語に含まれる数字をもとに文字列を並べ替える方法

    問題文を表す文字列を引数として受け取り、その内容を並べ替えた結果を返すJavaScript関数を作成する必要があります。文中の各単語には必ず1つの整数が含まれています。この関数では、最も小さい数値を持つ単語を先頭に置き、残りの単語も数値の昇順に並ぶように文字列全体を並べ替えます。コード例以下が実際の実装コードです。 { return findNumber(a) - findNumber(b); }; arr.sort(sorter); return arr.join( ); }; console.log(sortByNumber(str));出力結果Th

  2. JavaScriptで文字列内のアルファベットだけを反転する方法

    問題の概要JavaScriptで、アルファベットといくつかの特殊文字(記号)が混在する文字列 str を受け取る関数を作成することを求められています。この関数は、入力文字列をもとに新しい文字列を返します。その際のルールは次のとおりです。アルファベット以外の文字(記号・数字など)は、元の位置にそのまま留まります。アルファベットの文字だけが、互いに反転した位置へ移動します。入力例と出力例たとえば、関数への入力が以下だった場合を考えてみましょう。入力const str = k_lmn_opq;出力const output = q_pon_mlk;「_」という記号は位置が変わっておらず、アルファベット