为了账号安全,请及时绑定邮箱和手机立即绑定

将键、值 JSON 数组转换为表格 JSON 格式

将键、值 JSON 数组转换为表格 JSON 格式

富国沪深 2023-09-28 16:20:36
我有以下图表的 JSON 数据var chartJson = [    {        header : '2016',        values : [1, 5, 9]    },    {        header : '2017',        values : [2, 4, 8]    },    {        header : '2018',        values : [3, 1, 5]    }];并需要将其转换为这种格式以提供我的 HTML 表var tableJson = [    {        2016 : 1,        2017 : 2,        2018 : 3    },    {        2016 : 5,        2017 : 4,        2018 : 1    },    {        2016 : 9,        2017 : 8,        2018 : 5    }];任何将其转换为这种格式的快速帮助将不胜感激。我尝试使用这段代码,但不知何故缺少逻辑。let table = [];    for(var row of chartJson ){        for(var value of row.values)        {            table.push(                {                    column : row.header,                    value : value                });        }    }
查看完整描述

3 回答

?
狐的传说

TA贡献1804条经验 获得超3个赞

var chartJson = [{

    header: '2016',

    values: [1, 5, 9]

  },

  {

    header: '2017',

    values: [2, 4, 8]

  },

  {

    header: '2018',

    values: [3, 1, 5]

  }

];


let table = [];

chartJson.forEach((row, index) => {

  row.values.forEach((val, j) => {

    table[j] = { ...table[j],

      [row.header]: val

    }

  });

});


console.log(table)


查看完整回答
反对 回复 2023-09-28
?
汪汪一只猫

TA贡献1898条经验 获得超8个赞

  1. 迭代每个chartJson' 元素及其值(通过内部循环)直到values'length 并从中创建一个对象。

  2. 最后,将该对象推入table数组中。

就是这样。

看看下面的片段:

var chartJson = [

    {

        header: '2016',

        values: [1, 5, 9]

    },

    {

        header: '2017',

        values: [2, 4, 8]

    },

    {

        header: '2018',

        values: [3, 1, 5]

    }

];


let table = [];

let len_of_chartJson = chartJson.length, len_of_values = chartJson[0].values.length;


for (var i = 0; i < len_of_chartJson; i++) {

    let obj = {};

    for (var j = 0; j < len_of_values; j++) {

        obj[chartJson[j].header] = chartJson[j].values[i];

    }

    table.push(obj);

}


console.log(table);


查看完整回答
反对 回复 2023-09-28
?
Qyouu

TA贡献1786条经验 获得超11个赞

let table = chartJson.reduce((tbl, rec) => {

          rec.values.forEach((num, index) => {

                  if(!tbl[index]){

                          tbl[index] = {}

                  }

                  tbl[index][rec.header] = num

          })

          return tbl

          }, [])

数组reduce函数用于循环遍历每个对象,比每个对象循环遍历每个值,检查表中是否存在索引,如果不存在,则在当前索引处创建一个空对象。最后它在当前索引对象中创建一个键值。

查看完整回答
反对 回复 2023-09-28
  • 3 回答
  • 0 关注
  • 111 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信