JavaScript 如何从对象中删除键/属性
介绍:
JavaScript对象由属性组成,这些属性只是 键-值 对。实质上,属性由一对键和值组成,可以表示任何类型的实体。即使函数也可以作为值或键在任何对象中起作用。不管怎样,在本节中,我们将讨论如何在JavaScript中删除对象的键。
当键被移除时,与之关联的值会自动被删除。所以,删除键只是简单地删除那个属性。在JavaScript中,现在有三种方法可以删除对象的键。让我们快速了解一下每种方法。
如果有必要,JavaScript对象中的属性可以被删除。我们可以使用三个简单的方法来快速删除任何对象属性。第一种方法使用了 delete 操作符,这是JavaScript中的一种特殊操作符;第二种方法使用了 对象解构 ,第三种方法使用了 Reflect.deleteProperty() 方法。
1.使用Delete操作符从JavaScript对象中删除属性
delete操作符是JavaScript中的一种特殊操作符。如果我们想从JavaScript对象中删除一个键,可以使用 delete操作符 。delete操作符正如其名称所示,它会从对象中删除提供的属性。但是,在删除之前,我们必须先访问该属性。可以使用点属性访问器或方括号属性访问器来访问对象属性。
使用点法删除
语法:
delete object.property;
示例:
let emp = {
name: "saswat",
age: 26,
designation: "Software Engineer",
}
console.log(emp);
输出:
{ name: "saswat", age: 26, designation: "Software Engineer" }
age: 26
designation: "Software Engineer"
name: "saswat"
让我们以点的方式删除年龄属性。
delete emp.age;
console.log(emp);
输出:
{ name: "saswat", designation: "Software Engineer" }
designation: "Software Engineer"
name: "saswat"
解释:
从上面的输出中可以看出,删除操作符在删除 emp 对象的属性 age (点方式)时起到了作用。
使用方括号方法进行删除
语法:
delete object['property'];
让我们使用方括号从同一对象 emp 中删除指定属性。
let emp = {
name: "saswat",
age: 26,
designation: "Software Engineer",
}
delete emp['designation'];
console.log(emp);
输出:
{ name: "saswat", age: 26 }
name: "saswat"
age: 26
解释:
从上面的输出可以看出,delete运算符成功删除了对象emp的属性designation (使用方括号的方式) 。
2. 使用对象解构来删除JavaScript对象中的属性
对象解构 也可用于从对象中删除属性,但有一个问题。不是修改原始对象,而是创建一个不包含已删除属性的新对象。通过这种方式,原始项被保留(不变)。
语法:
const{ propertyToRemove, ...newObject } = OriginalObject;
示例:
const laptop = {
brand: "HP",
model: "Notebook",
year: 2020,
}
const {model, ...newLaptop} = laptop;
console.log(newLaptop);
console.log(laptop);
输出:
{ brand: "HP", year: 2020 }
{ brand: "HP", model: "Notebook", year: 2020 }
解释:
在上述示例中,我们使用对象解构从一个对象中删除了一个属性。当我们使用对象解构从原始对象laptop中删除属性model时,我们得到了新的对象myLaptop,不包含该属性。再次说明,输出结果显示原始项保持不变。
3. 使用Reflect.deleteProperty()方法从JavaScript对象中删除属性
Reflect.deleteProperty()方法由内置的JavaScript对象Reflect提供。这种方法类似于我们讨论过的delete运算符的函数形式。
示例:
const cars = {
car1: "Honda",
car2: "Tata",
car3: "Toyota"
};
Reflect.deleteProperty(cars, 'car2');
console.log(cars);
输出:
{ car1: 'Honda', car3: 'Toyota' }
说明:
在上面的示例中,有一个名为 “cars” 的对象,它有三个属性。为了从该对象中删除 car2 属性,我们使用了 Reflect.deleteProperty() 方法。输出结果表明,成功删除了cars对象中的car2属性。
最后,我们想说的是,无论您使用 delete运算符 还是 Reflect.deleteProperty() 方法都没什么区别,因为它们在时间复杂度上基本相同。然而,使用 对象解构 需要更多时间。因此,由于其简单的语法和低的时间复杂度,delete运算符是从JavaScript对象中删除键的最流行方法。
结论
JavaScript对象由属性组成,即键值对。当键删除时,关联的值会自动删除。