Ответ
Удалить ключ из объекта можно с помощью оператора 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 }
Важные нюансы:
deleteработает только со свойствами объекта, не с переменными- Не удаляет свойства из прототипа
- В strict mode вызов
deleteна неконфигурируемом свойстве вызовет ошибку - Оператор
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 остаётся нетронутым, как девичья честь, все довольны.
А теперь, ёпта, нюансы, от которых волосы в жопе шевелятся:
delete— это про свойства объектов, а не про переменные. Ты не сможешь сделатьdelete let x. Это как пытаться удалить свою репутацию — нихуя не выйдет, она уже везде.- Свойства из прототипа он тоже не удалит. Это как пытаться оторвать родинку у предка по фотографии — бесполезное занятие.
- В
strict mode, если свойство неконфигурируемое (как встроенные свойства каких-нибудь браузерных объектов),deleteплюнет тебе в лицо ошибкой. Не трогай святое, пидарас! - Ну и
deleteхоть что-то возвращает —trueилиfalse. Можешь проверить, удалось ли тебе нагадить в код, или ты просто обосрался намерениями.
Короче, выбирай: быстрый пиздец с delete или благородное сияние иммутабельности с деструктуризацией. А вообще, иногда лучше новый объект слепить, чем старый ковырять.