我正在加载一个Excel文件,并通过SheetJS库将其转换为JSON,但我通过这种方式收到它:
JSON.parse(输出)
data: Array(15)
0: (11) ["id", "created", "device", "plataforma", "locale", "first_render_time", "total_load_time", "total_size", "load_without_js", "request", "score"]
1: (11) ["424", "2019-11-19T23:58:07.977Z", "mobile", "PSI", "es-CO", "9840", "37602", "6286909", "3978", "227", "0"]
2: (11) ["423", "2019-11-19T23:57:43.340Z", "desktop", "PSI", "es-CO", "1981", "7903", "5424580", "3452", "204", "0.19"]
3: (11) ["422", "2019-11-19T23:55:24.163Z", "mobile", "PSI", "es-CO", "10052", "38450", "5850544", "3506", "231"
第一行必须是JSON name
。
我想以这种方式接收它。
[
{
id: 6049,
created: "2019-11-29T20:05:22.870Z",
device: "desktop",
plataforma: "PSI",
locale: "es-CO",
first_render_time: 2042,
total_load_time: 7904,
total_size: 6000627,
load_without_js: 3722,
request: 212,
score: "0.18"
},
{
id: 6046,
created: "2019-11-29T20:00:23.317Z",
device: "desktop",
plataforma: "PSI",
locale: "es-CO",
first_render_time: 2052,
total_load_time: 7974,
total_size: 6001442,
load_without_js: 3648,
request: 212,
score: "0.18"
}
]
destructuring将数组的标题(第一行)与正文(所有其他行)分开。使用Array.map()
迭代主体,然后使用Array.map()
将标头复制到对象,并从当前数组中获取数据:
您可以这样转换数据
const convertToObjects = ([header, ...body]) =>
body.map(arr => header.reduce((r, prop, i) => {
r[prop] = arr[i];
return r;
}, {}));
const data = [
["id", "created", "device", "plataforma", "locale", "first_render_time", "total_load_time", "total_size", "load_without_js", "request", "score"],
["424", "2019-11-19T23:58:07.977Z", "mobile", "PSI", "es-CO", "9840", "37602", "6286909", "3978", "227", "0"],
["423", "2019-11-19T23:57:43.340Z", "desktop", "PSI", "es-CO", "1981", "7903", "5424580", "3452", "204", "0.19"]
];
const result = convertToObjects(data);
console.log(result);
data.map((a,i)=> Object.fromEntries(data[0].map((x,j)=> [x,data[i][j]])) ).slice(1)