Суммирование значений нескольких Векторов в сеансе

Вот что-то более тонкое, хотя оно не позволяет повторить список полей. Он использует «деструктурирование параметров», чтобы избежать необходимости в параметре 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)})))
    );
}
0
задан James Warr 29 March 2019 в 13:00
поделиться

0 ответов

Другие вопросы по тегам:

Похожие вопросы: