Ecco qualcosa di più sottile, anche se non evita di ripetere l'elenco dei campi. Utilizza "destrutturazione dei parametri" per evitare la necessità del parametro v
.
({id, title}) => ({id, title})
@ La soluzione di EthanBrown è più generale. Ecco una versione più idiomatica di esso che utilizza Object.assign
, e le proprietà computerizzata (la [p]
parte):
function pick(o, ...props) {
return Object.assign({}, ...props.map(prop => ({[prop]: o[prop]})));
}
Se vogliamo conservare gli attributi le proprieta, come configurable
e getter e setter, ma anche omettendo non proprietà -enumerable, allora:
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)})))
);
}
fonte
2014-08-28 17:22:01
mi sono trovato che vogliono fare proprio questo. –