Я просматривал Руководство по стилю JavaScript Airbnb сегодня, когда натолкнулся на интригующий шаблон, который ловко использует оператор ES7 Object Rest Spread для исключения свойств объекта.

Готовый? Вот:

const myObject = {
  a: 1,
  b: 2,
  c: 3
};
const { a, ...noA } = myObject;
console.log(noA); // => { b: 2, c: 3 }

Сначала это меня смутило, поэтому я объясню. Мы используем Деструктуризацию объекта в сочетании с Оператором« Остаточное распространение объекта », чтобы разделить большой myObject на отдельные части a и noA.

По сути, он создает две новые const переменные и сохраняет в них отдельные части нашего объекта. Оператор rest сообщает сценарию, что нужно поместить любое другое явно не определенное свойство в последнюю переменную. Итак, все, что нам нужно сделать, это деструктурировать все свойства, которые нам не нужны - a - так что у нас останутся только те свойства, которые мы хотим сохранить в нашей последней переменной - noA.

«Совершенство достигается ... когда нечего убирать». - Антуан де Сент-Экзюпери

Что особенно замечательно в этом шаблоне, в отличие от delete, мы не изменяем исходный объект myObject и не удаляем ссылку a, поэтому можем быть уверены, что случайно не сломали что-то, что использует myObject или a.