尽管不能避免重复字段列表,但这里有些苗条。它使用“参数解构”来避免需要该
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)}))) );}


