如何在JS/TS中将对象数组嵌套子对象的属性迁移至外层
JavaScript/TypeScript 数组结构转换方案
方案1:不可变转换(推荐,不修改原数组)
直接使用Array.prototype.map结合对象扩展运算符,返回新数组,不会改动原数据,适用于绝大多数场景:
// 最简写法(对象解构+隐式返回) const desiredArray = currentArray.map(({ year, asset }) => ({ year, ...asset }));
如果是TypeScript环境,可以配合类型定义保证类型安全:
interface OriginalItem { year: number; asset: { silver: number; gold: number; } } interface DesiredItem { year: number; silver: number; gold: number; } const desiredArray: DesiredItem[] = currentArray.map(({ year, asset }: OriginalItem) => ({ year, ...asset }));
方案2:可变转换(直接修改原数组)
如果不需要保留原数组,可以用forEach遍历修改,节省内存开销:
currentArray.forEach(item => { // 将asset下的所有属性合并到外层对象 Object.assign(item, item.asset); // 删除原asset属性 delete item.asset; });
执行后原currentArray就会变成你需要的目标结构。
内容的提问来源于stack exchange,提问作者user12525404
相关产品推荐
相关产品推荐

