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

TypeScript 如何优雅地将表头和值数组转换为对象列表?

TypeScript 实现键数组、值数组转对象列表的方案

最简实现

直接结合Array.map和Object.fromEntries即可写出非常简洁的转换逻辑,代码如下:

let heads : string [] = ["name", "addr", "age"];
let vals : string [][] = [["sam", "NY", "30"],["chris", "WY", "22"],["sue", "TX", "55"]];

const result = vals.map(valRow => 
  Object.fromEntries(heads.map((head, index) => [head, valRow[index]]))
)

执行后result就是你需要的目标结构。

类型安全的通用封装

如果需要复用这个逻辑,同时保证TypeScript类型推导正常,可以封装为泛型工具函数:

function zipToObjectList<K extends string>(keys: K[], values: string[][]): Record<K, string>[] {
  return values.map(valRow => 
    Object.fromEntries(keys.map((key, idx) => [key, valRow[idx]]))
  ) as Record<K, string>[]
}

// 调用示例
const result = zipToObjectList(heads, vals)
// 此时result的类型会自动推导为:{ name: string; addr: string; age: string }[]
// 编辑器可以正常提示字段,避免拼写错误

额外说明

如果实际场景中存在values子数组长度和keys长度不一致的情况,可以在取值时补充兜底逻辑,比如把valRow[idx]改为valRow[idx] ?? ''避免出现undefined值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:27:04