यहाँ कुछ स्लिमर है, हालांकि यह खेतों की सूची को दोहराने से नहीं रोकता है। यह पैरामीटर की आवश्यकता से बचने के लिए "पैरामीटर विनाशकारी" का उपयोग करता है v
।
({id, title}) => ({id, title})
(इस अन्य उत्तर में एक ज्वलनशील उदाहरण देखें )।
@ EthanBrown का समाधान अधिक सामान्य है। यहाँ इसका एक अधिक मुहावरेदार संस्करण है जो उपयोग करता है Object.assign
, और गणना किए गए गुण ( [p]
भाग):
function pick(o, ...props) {
return Object.assign({}, ...props.map(prop => ({[prop]: o[prop]})));
}
यदि हम गुणों के गुणों को संरक्षित करना चाहते हैं, जैसे कि configurable
और गेटर्स और सेटर, जबकि गैर-गुणांक गुणों को छोड़ना, तब:
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)})))
);
}
Object.assign
; es6 एक क्रिसमस के पेड़ की तरह है, जिसके तहत बहुत सारे उपहार मिलते हैं, मैं अभी भी छुट्टी के महीनों के बाद उपहार पा रहा हूं