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

如何更优实现从对象数组提取属性并生成含新值的新对象?

优化方案整理

方案1:简化解构写法

直接在map的参数里完成解构,省去额外变量声明,代码更紧凑:

const a = things.map(({ obj1, obj2, obj3 }) => ({
  obj1,
  obj2,
  obj3,
  newVal: null,
  otherNewVal: null
}));

方案2:动态属性提取(适合属性较多的场景)

如果需要提取的属性数量多,或者属性列表可能动态调整,可以用属性数组配合Object.fromEntries批量提取,再合并新属性:

const targetProps = ['obj1', 'obj2', 'obj3'];
const a = things.map(thing => ({
  ...Object.fromEntries(targetProps.map(prop => [prop, thing[prop]])),
  newVal: null,
  otherNewVal: null
}));

方案3:封装复用的提取函数

如果这类提取操作在项目中多次出现,可以封装一个通用的pick函数,提升代码复用性:

function pick(obj, props) {
  return props.reduce((result, prop) => {
    result[prop] = obj[prop];
    return result;
  }, {});
}

const a = things.map(thing => ({
  ...pick(thing, ['obj1', 'obj2', 'obj3']),
  newVal: null,
  otherNewVal: null
}));

方案对比

  • 方案1最适合提取属性少的场景,写法直观,性能最优
  • 方案2和3适合属性数量多或需要动态调整的场景,可维护性更强

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 00:45:59