如何在 ES6 中以最紧凑的方式编写一个只需要几个属性的函数?
我想出了使用解构+简化对象文字的解决方案,但我不喜欢代码中重复字段列表。
有没有更精简的解决方案?
(v) => {
let { id, title } = v;
return { id, title };
}
最佳答案
这里有一些更精简的内容,尽管它并不能避免重复字段列表。它使用“参数解构”来避免使用 v
参数。
({id, title}) => ({id, title})
(请参阅此 other answer 中的可运行示例)。
@EthanBrown 的解决方案更为通用。这是一个更惯用的版本,它使用 Object.assign
和计算属性([p]
部分):
function pick(o, ...props) {
return Object.assign({}, ...props.map(prop => ({[prop]: o[prop]})));
}
如果我们想保留属性的属性,例如可配置
以及getter和setter,同时还省略不可枚举的属性,那么:
function pick(o, ...props) {
var has = p => o.propertyIsEnumerable(p),
get = p => Object.getOwnPropertyDescriptor(o, p);
return Object.defineProperties({},
Object.assign({}, ...props
.filter(prop => has(prop))
.map(prop => ({prop: get(props)})))
);
}
关于javascript - 从 ES 6 中的对象获取一些属性的单行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59359942/