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

JavaScriptで2つの配列を組み合わせてオブジェクト配列(JSON)に変換する方法

JavaScriptでは、キーとなる配列と値となる配列の2つを組み合わせて、1つのオブジェクト配列(JSON形式)を作成したいケースがよくあります。例えば、アンケートの選択肢とその真偽値を対応付けるような場面です。

変換元のデータ

まず、次のような2つの配列があったとします。

const options = ['A', 'B', 'C', 'D'];
const values = [true, false, false, false];

この2つの配列から、以下のように各要素をペアにした新しいオブジェクトの配列を生成して返す関数が必要です。

const response = [
    {opt: 'A', val: true},
    {opt: 'B', val: false},
    {opt: 'C', val: false},
    {opt: 'D', val: false},
];

実装方法

この処理は、forループを使ってシンプルに実装できます。片方の配列の長さ分だけ繰り返し処理を行い、それぞれのインデックスに対応する要素をペアとしてオブジェクトに格納していきます。

コード例

const options = ['A', 'B', 'C', 'D'];
const values = [true, false, false, false];

const mapArrays = (options, values) => {
    const res = [];
    for(let i = 0; i < options.length; i++){
        res.push({
            opt: options[i],
            val: values[i]
        });
    }
    return res;
};

console.log(mapArrays(options, values));

実行結果

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

[
    { opt: 'A', val: true },
    { opt: 'B', val: false },
    { opt: 'C', val: false },
    { opt: 'D', val: false }
]

map()メソッドを使った別の書き方

よりモダンな書き方としては、map()メソッドを利用する方法もあります。こちらの方がコードが簡潔になり、意図も明確に伝わります。

const mapArrays = (options, values) => 
    options.map((opt, i) => ({ opt, val: values[i] }));

map()は配列の各要素に対して処理を実行し、その結果から新しい配列を生成するため、このようなペアリング処理に適しています。ES2015以降では、プロパティ名と変数名が同じ場合の省略記法(ショートハンド)も使えるため、さらにスッキリとした記述が可能です。

まとめ

  • 2つの配列をインデックスで対応付けて、オブジェクトの配列に変換できる
  • 基本的なforループでも実装可能だが、map()を使うとより簡潔に書ける
  • 両配列の長さが異なる場合は、短い方に合わせて処理される点に注意(必要に応じて事前に長さチェックを追加すると安全)
  1. JavaScriptのJSON配列とは?基本構造と実装例をわかりやすく解説

    JSON(JavaScript Object Notation)は軽量なデータ交換形式であり、その配列はJavaScriptの配列とほぼ同じ形で表現されます。角括弧 [] の中に値をカンマ区切りで並べることで、文字列や数値、オブジェクトなど複数のデータをひとつにまとめて扱えます。以下は、JavaScriptのオブジェクト内にJSON配列を含めた基本的な例です。let obj = { name:Rohan, sports : [cricket,Football,volleyball,hockey] }この例では、「sports」というプロパティに4つのスポーツ名が配列として格納さ

  2. 【JavaScript】2つの配列を1つのオブジェクトに変換する方法をわかりやすく解説

    2つの配列を1つのJavaScriptオブジェクトに変換できる? はい、可能です。JavaScriptでは「キー」となる配列と「値」となる配列の2つを組み合わせて、1つのオブジェクトを作成できます。最も基本的な方法は、forEach()メソッドで片方の配列をループ処理しながら、もう片方の配列の対応する要素を値として代入していくやり方です。 以下に、実際に動作するサンプルコードを紹介します。 コード例 <!DOCTYPE html> <html lang=ja> <head> <meta charset=UTF-8 /> <meta name