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

JavaScriptで配列内の最長の文字列を検索する方法

JavaScriptでは、文字列の配列を受け取り、その中から最も長い文字列を検索して返す関数を作成することができます。

この処理を実装する上で重要なのは、元の配列の中身を一切変更しないことです。本記事では、reduce()メソッドを活用して、シンプルかつ効率的に最長文字列を取得する方法を紹介します。

実装コード

以下のコードをご覧ください。

const arr = ["aaaa", "aa", "aa", "aaaaa", "acc", "aaaaaaaa"];
const findLargest = (arr = []) => {
    if(!arr?.length){
        return '';
    };
    let res = '';
    res = arr.reduce((acc, val) => {
        return acc.length >= val.length ? acc : val;
    });
    return res;
};
console.log(findLargest(arr));

実行結果

コンソールには以下のように出力されます。

aaaaaaaa

コードの解説

この関数の動作を順番に見ていきましょう。

  • 引数のチェック: まず arr?.length を使って配列が空でないかどうかを確認し、空の場合や無効な場合は安全に空文字列を返します。
  • reduce()による要素の比較reduce()メソッドは配列の各要素を先頭から順に処理します。アキュムレータ(acc)と現在の要素(val)の文字数を比較し、より長い方を次のアキュムレータとして引き継ぎます。
  • 元の配列は保持されるreduce()は非破壊的なメソッドのため、入力配列は一切変更されず、元のデータがそのまま保たれます。

このように、わずか数行のコードで配列内の最長文字列を安全かつ簡潔に取得することができます。同様のアプローチは「最短の文字列」を探す場合にも応用でき、比較条件を逆にするだけで実装可能です。

  1. JavaScriptで配列内の唯一の異なる文字列を見つける方法

    問題 文字列の配列を受け取るJavaScript関数を作成する必要があります。配列内のすべての文字列は同じ文字(またはその並べ替え)で構成されていますが、ただ1つの文字列だけが異なる文字セットを含んでいます。この関数の目的は、その唯一の文字列を見つけ出して返すことです。 例: 次のような配列が与えられたとします。 [ba, abc, acb, bac, foo, bca, cab, cba] この場合、求めるべき文字列は「foo」です。 文字列には空白が含まれることがありますが、空白自体は意味を持たず、空白以外の記号のみが判定の対象となります。たとえば、空白だけで構成された文字列は空文字列と

  2. JavaScriptで文字列内の最長の母音部分文字列の長さを求める方法

    問題 文字列を引数として受け取るJavaScriptの関数を作成する必要があります。この関数は、母音(a、e、i、o、u)のみで構成される連続した部分文字列の中から、最も長いものの長さを返さなければなりません。 アプローチ この問題は、文字列を先頭から順番に走査しながら、現在連続している母音の数をカウントすることで解決できます。具体的な手順は以下の通りです。 cur:現在連続している母音の数を記録するカウンター変数 max:これまでに見つかった最長の母音連鎖の長さを保持する変数 走査中の文字が母音であれば cur を1増やし、max より大きければ max を更新する 子音に遭遇した場合は