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

如何将数组对象中嵌套子结构的属性提升到对象根层级

实现对象数组结构转换的方法

你可以通过数组遍历+对象展开的方式完成转换,以下是不同场景的实现方案:

方案1:ES6+ 无副作用转换(推荐)

该方案不会修改原数组,会生成新的转换后数组,且自动适配vacation下的所有字段,无需手动枚举属性:

const originalArray = [/* 你的原始数组 */];
const result = originalArray.map(({ vacation, ...rest }) => ({
  ...rest,
  ...vacation
}));

如果你只需要保留user字段+vacation的字段,不需要其他根级字段,可以简化为以下写法,避免把不需要的冗余字段带进来:

const result = originalArray.map(item => ({
  user: item.user,
  ...item.vacation
}));

方案2:ES5 兼容写法

如果需要兼容低版本JS运行环境,可以用以下写法:

var originalArray = [/* 你的原始数组 */];
var result = originalArray.map(function(item) {
  // 复制原对象属性
  var newItem = {};
  for (var key in item) {
    if (key !== 'vacation') {
      newItem[key] = item[key];
    }
  }
  // 合并vacation下的属性
  for (var vKey in item.vacation) {
    newItem[vKey] = item.vacation[vKey];
  }
  return newItem;
});

注意事项

  • 以上所有方案都是浅拷贝,如果user字段下的嵌套对象非常复杂,只会拷贝引用,修改新数组里的user属性会同步影响原数组的对应值。如果需要深拷贝,可以自行引入深拷贝方法处理user字段。
  • 如果需要直接修改原数组而非生成新数组,可以遍历数组后直接给每一项赋值vacation下的属性,再执行delete item.vacation即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 15:27:03