এখানে কিছু স্লিমার, যদিও এটি ক্ষেত্রগুলির তালিকার পুনরাবৃত্তি এড়ানো যায় না। প্যারামিটারের প্রয়োজনীয়তা এড়াতে এটি "প্যারামিটার ডেস্ট্রাকচারিং" ব্যবহার করে v
।
({id, title}) => ({id, title})
(এই অন্যান্য উত্তরে একটি চলমান উদাহরণ দেখুন )।
@ ইথানব্রাউন এর সমাধান আরও সাধারণ। এখানে এটির আরও একটি আইডোমেটিক সংস্করণ রয়েছে যা ব্যবহার করে 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
; এস একটি ক্রিসমাস ট্রি এর মত অনেকগুলি উপহার সহ আমি এখনও ছুটির কয়েক মাস পরে উপহারগুলি খুঁজে পাচ্ছি