Как удалить ключ из объекта

Ответ

Удалить ключ из объекта можно с помощью оператора delete:

const obj = { a: 1, b: 2, c: 3 };
delete obj.b;
console.log(obj); // { a: 1, c: 3 }

Без мутации исходного объекта (создавая новый):

const { b, ...rest } = obj;
console.log(rest); // { a: 1, c: 3 }

Важные нюансы:

  1. delete работает только со свойствами объекта, не с переменными
  2. Не удаляет свойства из прототипа
  3. В strict mode вызов delete на неконфигурируемом свойстве вызовет ошибку
  4. Оператор delete возвращает true при успешном удалении

Ответ 18+ 🔞

А, ну это же классика, блядь! Вечная тема — как от объекта отъебать ненужное свойство. Смотри, тут два главных подхода, как воровать с базара: быстро, но грязно, или аккуратно, но с подвохом.

Первый способ — тупо delete. Взял и выкинул, как сосалку в урну.

const obj = { a: 1, b: 2, c: 3 };
delete obj.b;
console.log(obj); // { a: 1, c: 3 }

Всё, пиши пропало. Свойства b больше нет. Оператор вернёт true, если удалось, и ты останешься доволен, как слон. Но это мутация, чувак, исходный объект теперь покалечен. Если где-то ещё на него ссылались — всем пизда, будут охуевать, откуда пустота взялась.

Второй способ — для хитрожопых, которые любят делать вид, что они чистенькие. Без мутации, через деструктуризацию с rest-оператором.

const { b, ...rest } = obj;
console.log(rest); // { a: 1, c: 3 }

Вот тут мы создаём новый объект rest, куда складываем всё, кроме выебанного нами свойства b. Старый obj остаётся нетронутым, как девичья честь, все довольны.

А теперь, ёпта, нюансы, от которых волосы в жопе шевелятся:

  1. delete — это про свойства объектов, а не про переменные. Ты не сможешь сделать delete let x. Это как пытаться удалить свою репутацию — нихуя не выйдет, она уже везде.
  2. Свойства из прототипа он тоже не удалит. Это как пытаться оторвать родинку у предка по фотографии — бесполезное занятие.
  3. В strict mode, если свойство неконфигурируемое (как встроенные свойства каких-нибудь браузерных объектов), delete плюнет тебе в лицо ошибкой. Не трогай святое, пидарас!
  4. Ну и delete хоть что-то возвращает — true или false. Можешь проверить, удалось ли тебе нагадить в код, или ты просто обосрался намерениями.

Короче, выбирай: быстрый пиздец с delete или благородное сияние иммутабельности с деструктуризацией. А вообще, иногда лучше новый объект слепить, чем старый ковырять.