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
相关产品推荐
相关产品推荐

