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

JS中如何从对象提取指定键的新对象?优化解构实现

如何优化从对象数组中提取指定键的代码?

嘿,你的这段代码其实已经相当简洁了!不过如果想要更灵活或者复用性更强的话,这里有几个优化方向可以参考:

  • 封装通用的提取函数
    要是后续需要多次提取不同的键,或者提取的键列表可能动态变化,封装一个可复用的工具函数会更高效:

    // 定义一个通用的pick函数,接收要提取的键数组,返回处理对象的函数
    const pick = (keys) => (obj) => Object.fromEntries(keys.map(key => [key, obj[key]]));
    
    // 直接调用即可
    const secondArr = arrayObj.map(pick(['a', 'd']));
    

    这个函数用Object.fromEntries把键值对数组转换为对象,不管你要提取1个还是10个键,都能轻松应对,复用性拉满。

  • 保持现有写法(固定少量键的场景)
    如果你只是固定提取两三个键,那你现在的写法({a, d}) => ({a, d})已经是最精炼、可读性最强的写法之一了——没必要为了“优化”而强行改得更复杂,直观易懂反而更重要。

  • 处理可能缺失的键(可选)
    如果数组里的某些对象可能缺少a或d键,你可以给解构的变量加默认值,避免结果里出现undefined:

    const secondArr = arrayObj.map( ({a = undefined, d = undefined}) => ({a, d}) );
    

    当然默认值可以根据你的业务需求改成0、空字符串之类的,不需要的话可以忽略这一步。

总的来说,你当前的代码已经属于“最少代码”的范畴了,优化方向主要看你的实际场景:需要动态键或复用就用封装函数,固定键的话现有写法完全够用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:13:56