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

JavaScriptで文字列をアルファベット順に並べ替え、各文字を「***」で区切る方法

問題

今回は、文字列の配列を受け取るJavaScript関数を作成します。

この関数が満たすべき要件は以下のとおりです。

  • 配列内の文字列をアルファベット順に並べ替える。
  • 並べ替えた後の最初の文字列を取得する。
  • その文字列の各文字を「***」で区切って返す。

コード例

実際のコードは次のようになります。

const arr = ['this', 'is', 'some', 'string', 'array'];
const specialSort = (arr = '') => {
    // 元の配列を変更しないようコピーを作成
    const copy = arr.slice();
    
    // アルファベット順にソート
    copy.sort();
    
    // 最初の文字列を取得
    const el = copy[0];
    
    // 各文字を分割して「***」で連結
    const res = el
    .split('')
    .join('***');
    
    return res;
};
console.log(specialSort(arr));

出力結果

a***r***r***a***y

処理の流れの解説

このコードがどのように動作しているのか、ステップごとに見ていきましょう。

  1. 配列のコピー作成: slice() を使うことで元の配列を壊さずにコピーを作成できます。引数なしで呼び出された場合もエラーにならないよう、デフォルト値として空文字列を設定しています。
  2. アルファベット順のソート: 引数なしの sort() は、要素を文字列に変換してUTF-16コードユニットの順序で比較します。すべて小文字の英単語であれば、これでアルファベット順に並びます。大文字・小文字が混在する場合は、比較関数を指定して正確にソートすることをおすすめします。
  3. 最初の要素の取得: ソート済みの配列の先頭 copy[0] が、辞書順で最も早い文字列です。この例では 'array' が該当します。
  4. 文字列の分割と結合: split('') で文字列を1文字ずつの配列に分解し、join('***') で区切り文字を挟みながら再結合します。

なお、「アンダースコア(_)」など別の区切り文字を使いたい場合は、join() の引数を変更するだけで簡単に対応できます。例えば join('_') とすれば、出力は a_r_r_a_y のようになります。

  1. 【JavaScript】奇数はそのまま、偶数のバイナリ文字列だけを昇順に並べ替える方法

    問題 空白文字で区切られた、長さ3のバイナリ(2進数)文字列を含む文字列を受け取り、処理するJavaScript関数を作成します。 要件はシンプルながら少し変わっています。数値を昇順に並べ替えるのはよいものの、並べ替えてよいのは偶数だけで、奇数はすべて元の位置にそのまま残す必要があります。 コード例 以下が実際のコードです − const str = 101 111 100 001 010; const sortEvenIncreasing = (str = ) => {     const sorter = (a, b) => { &nb

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

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