Skip to content

如何从JavaScript对象中删除属性?

在JavaScript中使用对象时,您可能会遇到需要从对象中完全删除属性的情况。为了实现这一点,您有几个选项可供选择:

将属性设置为undefined

将属性设置为undefined通常不是最佳选择,因为属性本身仍然存在于对象中,尽管是undefined。它还会改变原始对象,这可能是不希望的。您可能希望在检查属性的值或真实性而不是其存在性的情况下使用此选项。

const pet = {
  species: 'dog',
  age: 3,
  name: 'celeste',
  gender: 'female'
};

pet.gender = undefined;
Object.keys(pet); // ['species', 'age', 'name', 'gender']

使用delete运算符

delete运算符在技术上是从JavaScript对象中删除属性的正确方法。与前一个选项不同,delete将完全从对象中删除属性,但它仍然会导致变异。

const pet = {
  species: 'dog',
  age: 3,
  name: 'celeste',
  gender: 'female'
};

delete pet.gender;
Object.keys(pet); // ['species', 'age', 'name']

使用对象解构

使用扩展语法(...),你可以将具有特定属性的对象解构并赋值给一个新对象,省略了特定属性。这个技巧在你想要删除一组属性而不仅仅是一个属性时非常有用,并且有一个额外的好处是不会改变原始对象。

const pet = {
  species: 'dog',
  age: 3,
  name: 'celeste',
  gender: 'female'
};

const { gender, ...newPet } = pet;
Object.keys(pet); // ['species', 'age', 'name', 'gender]
Object.keys(newPet); // ['species', 'age', 'name']