【问题标题】:turn a table into an array of objects in JavaScript在 JavaScript 中将表转换为对象数组
【发布时间】:2018-07-24 12:17:13
【问题描述】:

我有一张桌子

const header = ["name", "age", "hobby"];
const content = [ ["Eva", 3, "dance"],
                  ["Kevin", 5, "ball"],
                  ...];

如何将输出作为对象数组?

[{name: "Eva", age: 3, hobby: "dance"}, 
 {name: "Kevin", age: 5, hobby: "ball"},
 ...]

【问题讨论】:

标签: javascript lodash


【解决方案1】:

Lodash(或underscore.js)库提供了一些不错的函数来转换数据。就一行:

import _  from 'lodash';
const output = content.map((row) => _.zipObject(row, header));

【讨论】:

    【解决方案2】:

    你可以用 javascript 做这样的事情:

    const header = ["name", "age", "hobby"];
    const content = [["Eva", 3, "dance"],
     ["Kevin", 5, "ball"]
    ];
    const result = [];
    
    for (var i = 0; i < content.length; i++) {
     var obj = {};
     for (var j = 0; j < header.length; j++) {
      obj[header[j]] = content[i][j];
     }
     result.push(obj);
    }
    console.log(result);

    【讨论】:

      【解决方案3】:

      可以用map和reduce来完成

      const header = ["name", "age", "hobby"];
      const content = [
        ["Eva", 3, "dance"],
        ["Kevin", 5, "ball"]
      ];
      
      console.log(content.map((item) => {
        return header.reduce((acc, cur, i) => {
          acc[cur] = item[i];
          return acc;
        }, {});
      }));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-09
        • 2018-08-21
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-10-22
        相关资源
        最近更新 更多