TypeScript中如何将普通数组转换为带自定义键的对象数组
实现方案
该需求属于标准的数组元素映射场景,使用Array.prototype.map遍历转换是性能最优、写法最简洁的实现方式,配合TypeScript类型定义可以保证类型安全。
第一步:定义输出数据类型
提前声明对象结构的接口,避免后续属性拼写、类型赋值错误:
interface PersonItem { name: string; initial: string; year: string; }
第二步:执行转换
const originalArray = ["Tom", "Jack", "Rose"]; const FIXED_YEAR = "2021"; // 固定值抽离为常量方便后续统一修改 const convertedArray: PersonItem[] = originalArray.map(name => ({ name, // 取首字符转小写,加可选链兜底避免空字符串运行时报错 initial: name?.[0]?.toLowerCase() ?? "", year: FIXED_YEAR }));
可复用封装
如果需要频繁使用该转换逻辑,可以封装为通用工具函数,支持自定义年份:
function convertNameToPerson(arr: string[], year: string = "2021"): PersonItem[] { return arr.map(name => ({ name, initial: name?.[0]?.toLowerCase() ?? "", year })) } // 调用示例 const result = convertNameToPerson(originalArray); // 自定义年份调用 const result2024 = convertNameToPerson(originalArray, "2024");
该实现的时间复杂度为O(n),仅遍历一次原数组即可得到结果,无额外性能开销。
内容的提问来源于stack exchange,提问作者WenliL
相关产品推荐
相关产品推荐

