Đây là một cái gì đó mỏng hơn, mặc dù nó không tránh lặp lại danh sách các lĩnh vực. Nó sử dụng "hủy tham số" để tránh sự cần thiết của v
tham số.
({id, title}) => ({id, title})
(Xem một ví dụ có thể chạy trong câu trả lời khác này ).
Giải pháp của @ EthanBrown là tổng quát hơn. Đây là một phiên bản thành ngữ hơn của nó sử dụng Object.assign
và các thuộc tính được tính toán ( [p]
phần):
function pick(o, ...props) {
return Object.assign({}, ...props.map(prop => ({[prop]: o[prop]})));
}
Nếu chúng ta muốn giữ các thuộc tính của thuộc tính, chẳng hạn như configurable
và getters và setters, trong khi cũng bỏ qua các thuộc tính không thể đếm được, thì:
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 giống như một cây thông Giáng sinh với rất nhiều món quà bên dưới. Tôi vẫn đang tìm quà trong nhiều tháng sau kỳ nghỉ