JavaScriptで文字列内の最長の単語を検索する方法
文字列から最長の単語を見つけるJavaScript関数
文字列を唯一の引数として受け取り、その文字列を走査して最も長い単語を見つけて返すJavaScript関数を作成する方法を解説します。
例
入力文字列が以下の場合を考えてみましょう。
const str = 'Coding in JavaScript is really fun';
この場合、出力は次のようになります。
const output = 'JavaScript';
コード例
以下が実際のコードです。
const str = 'Coding in JavaScript is really fun';
const findLongest = (str = '') => {
const strArr = str.split(' ');
const word = strArr.reduce((acc, val) => {
let { length: len } = acc;
if(val.length > len){
acc = val;
};
return acc;
}, '');
return word;
};
console.log(findLongest(str));出力
コンソールには以下のように出力されます。
JavaScript
コードの解説
この関数がどのように動作するのか、順を追って見ていきましょう。
- split(' '): 文字列をスペースで区切り、単語の配列に変換します。
- reduce(): 配列の各単語を順番に処理し、これまでに見つかった最長の単語を累積値(acc)として保持します。
- 現在の単語の長さが累積値の長さより大きければ、累積値を現在の単語で置き換えます。
- 最終的に、最も長い単語が呼び出し元に返されます。
別のアプローチ
sort()を使う方法
単語を長さの降順にソートし、先頭の要素を取得する方法もあります。
const findLongest = (str = '') => {
return str.split(' ').sort((a, b) => b.length - a.length)[0];
};
console.log(findLongest('Coding in JavaScript is really fun'));この方法は非常に簡潔ですが、配列全体をソートするため、単語数が多い場合はreduce()を使う方法よりもパフォーマンスが劣る可能性があります。
for...ofループを使う方法
より直感的に理解しやすいfor...ofループを使った実装例です。
const findLongest = (str = '') => {
let longest = '';
for (const word of str.split(' ')) {
if (word.length > longest.length) {
longest = word;
}
}
return longest;
};
console.log(findLongest('Coding in JavaScript is really fun'));まとめ
文字列から最長の単語を検索するには、split()で文字列を単語の配列に分割し、reduce()やループ処理で最長の単語を特定するのが基本的なアプローチです。コードの可読性とパフォーマンスのバランスを考慮し、目的に合った方法を選択しましょう。
-
JavaScriptで文字列内の最長の母音部分文字列の長さを求める方法
問題 文字列を引数として受け取るJavaScriptの関数を作成する必要があります。この関数は、母音(a、e、i、o、u)のみで構成される連続した部分文字列の中から、最も長いものの長さを返さなければなりません。 アプローチ この問題は、文字列を先頭から順番に走査しながら、現在連続している母音の数をカウントすることで解決できます。具体的な手順は以下の通りです。 cur:現在連続している母音の数を記録するカウンター変数 max:これまでに見つかった最長の母音連鎖の長さを保持する変数 走査中の文字が母音であれば cur を1増やし、max より大きければ max を更新する 子音に遭遇した場合は
-
JavaScriptで文字列内の特定文字の最大連続出現回数を求める方法
本記事では、JavaScriptを使って「文字列の中である1文字が連続して出現する最大回数」を求める方法を解説します。アルゴリズムの考え方から実際のコード、実行結果まで、初心者にもわかりやすく説明していきます。 問題 次のようなJavaScript関数を作成することを目標とします。 第1引数として文字列を受け取る 第2引数として1文字を受け取る その文字が文字列内で連続して出現した最長の回数を数え、返す コード例 以下がその実装コードです。 { const arr = str.split();