gpt4 book ai didi

javascript - 从 ES 6 中的对象获取一些属性的一行代码

转载 作者:搜寻专家 更新时间:2023-11-01 04:40:36 24 4
gpt4 key购买 nike

如何在 ES6 中以最紧凑的方式编写一个只接受几个属性的函数?

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

是否有更精简的解决方案?

(v) => {
let { id, title } = v;
return { id, title };
}

最佳答案

这里有一些更 slim 的东西,尽管它不会避免重复字段列表。它使用“参数解构”来避免对 v 参数的需要。

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

(参见 other answer 中的可运行示例)。

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

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

如果我们想保留属性的属性,例如 configurable 和 getters 和 setters,同时也忽略不可枚举的属性,那么:

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/34011876/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com