求一个js方法实现表头与表体数据结合成key:value形式?
现在有一份这样得数据:
{
"code": 0,
"msg": null,
"data": {
"columns": [{
"columnCode": "ID",
"columnType": "STRING"
}, {
"columnCode": "DATE",
"columnType": "DATE"
}, {
"columnCode": "OIL",
"columnType": "NUMERIC"
}, {
"columnCode": "GAS",
"columnType": "NUMERIC"
}],
"rows": [
["1", "2022-08-08 14:25:05", 23.123, 12.123],
["2", "2022-08-09 14:25:24", 14.123, 45.123],
["3", "2022-08-10 14:25:44", 15.123, 16.123],
["4", "2022-08-11 14:25:05", 12.123, 16.123],
["5", "2022-08-12 14:25:05", 15.123, 24.123],
["6", "2022-08-13 14:25:05", 16.123, 23.123]
]
}
}
希望通过一个方法组织成这样一个数据:可以看到得规律是:columns是表头,rows是表体。但是表体与表头对应关系为表体得下标。表头得对应字段是columnCode;怎么实现?
[
{"ID": "1", "DATE": "2022-08-08 14:25:05", "OIL":23.123, "GAS": 12.123 },
{"ID": "2", "DATE": "2022-08-09 14:25:24", "OIL":14.123, "GAS": 45.123 },
...
]
以此类推。求一个方法实现这个功能!
回复
1个回答

test
2024-07-17
js
代码
const resp = {...};
function work({data: {columns: cols, rows}}) {
return rows.map(row => Object.fromEntries(
cols.map((col, i) => [col.columnCode, row[i]])
));
}
console.log(work(resp));
结果
[
{"ID": "1", "DATE": "2022-08-08 14:25:05", "OIL": 23.123, "GAS": 12.123},
{"ID": "2", "DATE": "2022-08-09 14:25:24", "OIL": 14.123, "GAS": 45.123},
{"ID": "3", "DATE": "2022-08-10 14:25:44", "OIL": 15.123, "GAS": 16.123},
{"ID": "4", "DATE": "2022-08-11 14:25:05", "OIL": 12.123, "GAS": 16.123},
{"ID": "5", "DATE": "2022-08-12 14:25:05", "OIL": 15.123, "GAS": 24.123},
{"ID": "6", "DATE": "2022-08-13 14:25:05", "OIL": 16.123, "GAS": 23.123}
]
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容