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

JavaScriptで数値の配列をアルファベットの文字列に変換する方法

問題

数値の配列を引数として受け取るJavaScript関数を作成する必要があります。この関数は、ハイフン(-)で区切られた次の4つの部分から成る1つの文字列を返さなければなりません。

  • 配列の先頭2つと末尾2つの数値から導かれる4文字の「単語」。並び順は左から右に読む順(先頭、2番目、末尾から2番目、末尾)とする。

  • 同じ処理を、配列を昇順にソートした後に行ったもの。

  • 同じ処理を、配列を降順にソートした後に行ったもの。

  • 同じ処理を、配列をASCII文字に変換してアルファベット順にソートした後に行ったもの。

この4つの部分をつなぎ合わせて1つの文字列とし、各部分の間はハイフン(-)で区切ります。

コード例

以下が実際の実装コードです。

const arr = [99, 98, 97, 96, 81, 82, 82];
const transform = (arr = []) => {
    let res = [];
    res.push(arr[0], arr[1], arr[arr.length-2], arr[arr.length-1]);
    res = res.map(x=>String.fromCharCode(x)).join('');
    const arr1 = arr
    .map(el => String.fromCharCode(el))
    .sort();
    const arr2 = (arr1.slice(0, 2) + ',' + arr1.slice(-2))
    .split(',')
    .join('');
    const arr3 = arr2
    .split('')
    .reverse()
    .join('');
    return `${res}-${arr2}-${arr3}-${arr2}`;
};
console.log(transform(arr));

出力

cbRR-QRbc-cbRQ-QRbc

コードのポイント

このコードの核となっているのは、String.fromCharCode()メソッドです。これはASCIIコードの数値(例:99)を対応する文字(例:「c」)に変換できるため、数値の配列をそのままアルファベットの文字列へと変換できます。処理の流れを整理すると、次のようになっています。

  • 先頭・末尾の要素を取得:インデックス指定(arr[0]arr[arr.length-1]など)により、元の配列の先頭2要素(99, 98)と末尾2要素(82, 82)を取り出し、文字化して連結すると「cbRR」となります。
  • アルファベット順にソート:全要素をあらかじめ文字に変換してからsort()を呼び出すことで、大文字・小文字も含めた文字コード順に並べ替えられます。
  • 部分文字列の組み立て:slice()でソート済み配列の先頭2文字と末尾2文字を切り出して連結(「QRbc」)し、さらにreverse()で逆順にした文字列(「cbRQ」)などと組み合わせます。
  • 最終的な結合:テンプレートリテラルを使い、各部分をハイフンで区切った1つの文字列として返しています。

なお、JavaScriptのsort()メソッドはデフォルトで要素を文字列として比較するため、数値を先にString.fromCharCode()で文字化しておくことが、意図どおりのアルファベット順ソートを実現する重要なポイントです。このように、配列操作の基本メソッドを組み合わせるだけで、一見複雑な変換処理も簡潔に記述できます。

  1. JavaScriptで配列に要素を追加する方法!push・unshift・spliceの使い方を解説

    JavaScriptで配列に要素を追加するには、追加する位置(末尾・先頭・任意の場所)に応じて、使用すべきメソッドが異なります。この記事では、代表的な3つのパターンをコード例とともにわかりやすく解説します。配列の末尾に要素を追加する:pushメソッド配列の末尾に要素を追加するときは、pushメソッドを使います。let veggies = [Onion, Raddish]; veggies.push(Cabbage); console.log(veggies);実行結果は以下のとおりです。[Onion, Raddish, Cabbage]pushは可変長引数に対応しているため、複数の要素を一度に

  2. JavaScriptのオブジェクト配列に配列メソッドを適用する方法

    JavaScriptでは、オブジェクトが格納された配列に対しても、通常の配列と同じようにpop()、push()、splice()などの標準的な配列メソッドをそのまま使用できます。オブジェクト配列はあくまで「配列」であるため、要素としてオブジェクトが入っていても配列操作のAPIは共通で動作します。 コード例 以下は、JavaScriptオブジェクトの配列に対して配列メソッドを使用するサンプルコードです。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8