Использование деструктуризации оставшейся части объекта позволяет легко внести в черный список свойства объект, как в следующем примере:
const original = {
a: 1,
b: 2,
c: 3,
evil: "evil",
ugly: "ugly",
};
const { evil, ugly, ...sanitized } = original;
console.log(sanitized); // prints { a: 1, b: 2, c: 3 }
Интересно, существует ли аналогичный краткий способ сделать то же самое, но с использованием белого списка свойств (в примере: { a, b, c }
). Очень часто мне приходится конвертировать подмножество доступных свойств в JSON, и такой функционал сделал бы код намного читабельнее и безопаснее.
Я нашел аналогичный вопрос, но это не совсем та же проблема: of-one-object-to-other-in-es6-es20">Есть ли более краткий способ сопоставления свойств одного объекта с другим в ES6/ES2015?
Изменить: жаль, что следующий код не работает, так как он возвращает исходный объект вместо отфильтрованного.
const sanitized = {a, b, c} = original;
// sanitized === original
const { a, b } = original; const new = { a, b };
, но вы не получите более краткого, чем это. - person nils   schedule 25.08.2016_.pick
lodash. - person nils   schedule 25.08.2016object.{a, b, c}
, выбратьa
,b
иc
изobject
и создать из них новый объект. Это обсуждалось в списке рассылки es-discuss. См. этот репозиторий github. - person   schedule 25.08.2016const { a, b } = { c, d } = { a:1, b:2, c:3, d:4 };
) - person Manolo Santos   schedule 25.08.2016const tmp = { a:1, b:2, c:3, d:4 }; const { c, d } = tmp; const { a, b } = tmp;
- person Paul   schedule 25.08.2016