JavaScript一线从ES 6中的对象获取某些属性

如何编写一个在ES6中仅以最紧凑的方式仅包含很少的属性的函数?

我想出了使用解构+简化对象文字的解决方案,但是我不喜欢代码中重复的字段列表。

有没有更苗条的解决方案?

(v) => {

let { id, title } = v;

return { id, title };

}

回答:

尽管不能避免重复字段列表,但这里有些苗条。它使用“参数解构”来避免需要该v参数。

({id, title}) => ({id, title})

@EthanBrown的解决方案更为通用。这是它的更惯用的版本,它使用Object.assign和计算的属性([p]部分):

function pick(o, ...props) {

return Object.assign({}, ...props.map(prop => ({[prop]: o[prop]})));

}

如果我们要保留属性的属性(例如和configurable和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中的对象获取某些属性 的全部内容, 来源链接: utcz.com/qa/426443.html

回到顶部