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

JavaScriptでカンマ区切りの文字列をオブジェクト内の配列に変換する方法

次のような文字列があるとします。

const str = 'dress/cotton/black, dress/leather/red, dress/fabric, houses/restaurant/small, houses/school/big, person/james';

このような文字列を受け取り、カテゴリ(最初の単語)ごとに値をまとめた、以下のような配列を持つオブジェクトを生成するJavaScript関数を作成する必要があります。

const output = {
    dress: ["cotton", "leather", "black", "red", "fabric"],
    houses: ["restaurant", "school", "small", "big"],
    person: ["james"]
};

実装コードの例

const str = 'dress/cotton/black, dress/leather/red, dress/fabric, houses/restaurant/small, houses/school/big, person/james';

const buildObject = (str = '') => {
    const result = {};
    const strArr = str.split(', ');
    strArr.forEach(el => {
        const values = el.split('/');
        const key = values.shift();
        result[key] = (result[key] || []).concat(values);
    });
    return result;
};

console.log(buildObject(str));

コードの仕組み

この関数は、次の手順で処理を行います。

1. 文字列をグループに分割

まず split(', ') を使って、元の文字列を「dress/cotton/black」のようなグループ単位に分割します。区切り文字として「カンマ+半角スペース」を指定している点に注意してください。

2. 各グループをキーと値に分解

次に、各グループを split('/') でスラッシュ区切りに分解します。そして shift() を使って先頭の要素を取り出し、それをオブジェクトのキーとして使用します。残りの要素がそのキーに対応する値の配列になります。

3. 同じキーへの値の追記

同じキーがすでに存在する場合は concat() で既存の配列に値を連結し、存在しない場合は空の配列から新しく作成します。(result[key] || []) の部分がこの判定を担っています。

出力結果

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

{
    dress: [ 'cotton', 'leather', 'black', 'red', 'fabric' ],
    houses: [ 'restaurant', 'small', 'school', 'big' ],
    person: [ 'james' ]
}

このように、split()shift()concat() を組み合わせるだけで、構造化されていない文字列データを扱いやすいオブジェクト形式へ簡単に変換できます。CSVライクなデータやURLパスのような階層データの前処理にも応用できる便利なパターンです。

  1. JavaScriptで文字列を日付に変換する方法

    日付を表すのに最もおすすめの形式は「yyyy-mm-dd」です。これはISO 8601(国際標準規格)に準拠した形式で、国や地域による表記の違いによる混乱がなく、誰にとっても分かりやすいのが特徴です。JavaScriptでは、この形式の文字列からDateオブジェクトへの変換はとても簡単です。文字列をそのままDateコンストラクタに渡すだけで、自動的に解析してくれます。基本的な例let a = 2019-08-10; console.log(new Date(a));出力結果上記のコードを実行すると、次のような出力が得られます。Sat Aug 10 2019 05:30:00 GMT+0530

  2. 文字列をJavaScriptオブジェクトに変換する方法【JSON.parse()の使い方】

    JavaScriptでJSON形式の文字列をオブジェクトに変換するには、JSON.parse()メソッドを使用します。このメソッドは、引数に渡された文字列を解析(パース)し、対応するJavaScriptオブジェクトを返します。 サンプルコード <!DOCTYPE html> <html lang=ja> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=device-width, initial-scale=1.0 /> <title>Docum