JavaScript从对象选取属性时如何避免重复书写属性名?
实现方案
方案1:ES6+ 解构+属性简写(最推荐)
这是JavaScript标准支持的原生写法,可读性高,也是工业界的通用实践:
// 先从原对象中解构出需要的属性 const { depth } = object_with_many_attributes; // 利用对象字面量属性简写构造新对象 const a = { depth };
如果需要同时提取多个属性,优势会更明显,每个属性仅需书写一次:
const { depth, width, height, color } = object_with_many_attributes; const a = { depth, width, height, color };
方案2:单行立即执行函数实现
如果希望逻辑合并为一行,可以用匿名立即执行函数封装解构逻辑:
const a = (({ depth }) => ({ depth }))(object_with_many_attributes);
该写法同样符合ES标准,但可读性弱于方案1,不建议在复杂逻辑中使用。
方案3:ES5 兼容方案(自定义工具函数)
如果需要兼容不支持ES6语法的旧运行环境,可以自行封装pick工具函数实现需求:
function pick(sourceObj, keyList) { var result = {}; for (var i = 0; i < keyList.length; i++) { var key = keyList[i]; result[key] = sourceObj[key]; } return result; } // 调用时仅需书写一次属性名 var a = pick(object_with_many_attributes, ['depth']);
内容的提问来源于stack exchange,提问作者yigal
相关产品推荐
相关产品推荐

