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()で文字化しておくことが、意図どおりのアルファベット順ソートを実現する重要なポイントです。このように、配列操作の基本メソッドを組み合わせるだけで、一見複雑な変換処理も簡潔に記述できます。
-
JavaScriptで配列に要素を追加する方法!push・unshift・spliceの使い方を解説
JavaScriptで配列に要素を追加するには、追加する位置(末尾・先頭・任意の場所)に応じて、使用すべきメソッドが異なります。この記事では、代表的な3つのパターンをコード例とともにわかりやすく解説します。配列の末尾に要素を追加する:pushメソッド配列の末尾に要素を追加するときは、pushメソッドを使います。let veggies = [Onion, Raddish]; veggies.push(Cabbage); console.log(veggies);実行結果は以下のとおりです。[Onion, Raddish, Cabbage]pushは可変長引数に対応しているため、複数の要素を一度に
-
JavaScriptのオブジェクト配列に配列メソッドを適用する方法
JavaScriptでは、オブジェクトが格納された配列に対しても、通常の配列と同じようにpop()、push()、splice()などの標準的な配列メソッドをそのまま使用できます。オブジェクト配列はあくまで「配列」であるため、要素としてオブジェクトが入っていても配列操作のAPIは共通で動作します。 コード例 以下は、JavaScriptオブジェクトの配列に対して配列メソッドを使用するサンプルコードです。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8