86415


## 質問

以下のような二次元配列（CSVなどから取得）から、JSON形式に変換するコードを書いたのですが、車輪の再発明のような気がしてならず、質問しました。

## 期待する回答

多くの方が既に取り組まれているコードかと思っておりまして、わざわざ自分で作らなくても、既に便利な関数なりライブラリがあるんじゃないかと思います。  
これをご存じであればご教示いただきたいです。  
（なければないで構いません）

想像しているのは、たとえばpythonだと`zip`があるので（多少頑張る必要はありましたが）あまり気にしなかったんですが、JavaScriptで相応の関数なりライブラリがあればと思いました。

## 期待していない回答

泥臭い方法での解答コードは不要です。  
mapやfilterを使うケースについては、既に動くものが手元に存在しています。

この泥臭いコードを作成していて、ふと疑問に思ったので質問させていただいているという経緯です。

**対象の二次元配列:**

[code]

    let data = [
      ["header1", "header2", ...],
      ["content1", "content2", ...],
      ["content1", "content2", ...],
      ...
    ]
    
[/code]

**CSVデータから変換後の(期待する)JSONデータ:**

[code]

    let data = [
      {
        [data[0][0]]: data[1][0],
        [data[0][1]]: data[1][1],
        [data[0][2]]: data[1][2],
        ...
      }, {
      {
        [data[0][0]]: data[2][0],
        [data[0][1]]: data[2][1],
        [data[0][2]]: data[2][2],
        ...
      }, 
      ...
    ]
    
[/code]


CC BY-SA 4.0
2022-02-16T08:27:51.843
86388
2022-02-17T13:00:04.883
2022-02-16T11:10:32.750
3060
27817
question
javascript json
JavaScriptでCSVデータが入った二次元配列をJSONにしたい


[lodashの `zipObject`](https://lodash.com/docs/4.17.15#zipObject)
を使えば、最小限の頑張りで実現できそうです。

[code]

    const { zipObject } = require("lodash");
    // const zipObject = require("lodash.zipobject");
    // import { zipObject } from "lodash";
    // import zipObject from "lodash.zipobject";
    
    const data = [
      ["header1", "header2"],
      ["content1.1", "content1.2"],
      ["content2.1", "content2.2"],
      ["content3.1", "content3.2"],
    ];
    
    const [header, ...values] = data;
    const output = values.map(value => zipObject(header, value));
    console.log(output);
    // [
    //   { header1: 'content1.1', header2: 'content1.2' },
    //   { header1: 'content2.1', header2: 'content2.2' },
    //   { header1: 'content3.1', header2: 'content3.2' }
    // ]
    
[/code]


CC BY-SA 4.0
2022-02-17T13:00:04.883
86415
2022-02-17T13:00:04.883
51277
86388
answer