You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript如何将对象数组转换为带列名的datatable格式?

实现方案

你可以直接用「提取表头 + 遍历取值拼接」的方式实现,代码非常简洁:

// 提取第一个对象的所有key作为表头
const headers = Object.keys(source[0])
// 遍历源数组,提取每个对象的value并统一转成字符串(匹配你需要的输出值格式)
const rows = source.map(item => Object.values(item).map(val => String(val)))
// 合并表头和数据行得到最终datatable
const datatable = [headers, ...rows]

执行后得到的datatable结果完全符合你的要求:

[
  ['day', 'deliveries', 'hours'],
  ['1', '16', '9'],
  ['2', '19', '11']
]

额外说明

你之前拼接错误的核心原因是:直接用concat把表头一维数组和行二维数组合并,会把行的子数组当成表头数组的普通元素拼接进去,正确做法是把表头作为二维数组的第一个元素,再用展开运算符把所有行数据塞到后续位置即可。

如果要兼容源数组为空的场景,可以加一层判断兜底:

const datatable = source.length ? [Object.keys(source[0]), ...source.map(item => Object.values(item).map(String))] : []

内容的提问来源于stack exchange,提问作者Aman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 15:09:00