-
狐的传说
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)
-
汪汪一只猫
迭代每个chartJson' 元素及其值(通过内部循环)直到values'length 并从中创建一个对象。最后,将该对象推入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);
-
Qyouu
let table = chartJson.reduce((tbl, rec) => { rec.values.forEach((num, index) => { if(!tbl[index]){ tbl[index] = {} } tbl[index][rec.header] = num }) return tbl }, [])数组reduce函数用于循环遍历每个对象,比每个对象循环遍历每个值,检查表中是否存在索引,如果不存在,则在当前索引处创建一个空对象。最后它在当前索引对象中创建一个键值。