Как удалить свойство из объекта
Короткий ответ
Оператор delete удаляет свойство из самого объекта:
const user = { name: 'Anna', password: 'secret' };
delete user.password;
console.log(user);Результат:
{
"name": "Anna"
}Копия без свойства
Деструктуризация с ...rest забирает свойство и оставляет остальное в новом объекте. Исходный объект не меняется:
const user = { name: 'Anna', password: 'secret', age: 30 };
const { password, ...safeUser } = user;
console.log(JSON.stringify(safeUser));
console.log(Object.keys(user).length);Результат:
{"name":"Anna","age":30}
3Несколько свойств
Отфильтруйте пары объекта по списку ключей:
const omit = (object, keys) => Object.fromEntries(Object.entries(object).filter(([key]) => !keys.includes(key)));
const order = { id: 5, total: 40, internalNote: 'vip', token: 'abc' };
console.log(JSON.stringify(omit(order, ['internalNote', 'token'])));Результат:
{"id":5,"total":40}Частая ошибка
Присвоение свойству undefined не удаляет его: ключ остаётся в объекте:
const user = { name: 'Anna', password: 'secret' };
user.password = undefined;
console.log(Object.keys(user).join(', '));
console.log('password' in user);Результат:
name, password
trueФункции из этого ответа
- Object.entries — Возвращает массив пар «имя свойства и значение».
- Object.fromEntries — Создаёт объект из списка пар ключ — значение.