在使用 JavaScript 中的对象时,你可能会遇到需要从对象中完全删除属性的情况。为实现这一点可以有好几个选择:
8 v) _: s, }2 x' o4 a3 a- O+ z2 O一、将属性设置为 undefined
. w9 h: g2 o) G 将属性设置为 undefined 不是最好的方法,因为属性本身仍将存在于对象中。它还会改变原始对象,这可能是你所不希望的。( L6 X' s/ o4 D7 L( `8 j$ k: l
const pet = {
species: 'dog',
age: 3,
name: 'celeste',
gender: 'female'
};
pet.gender = undefined;
Object.keys(pet); // ['species', 'age', 'name', 'gender'] 二、使用 delete 操作符; H0 z! d& q9 ]7 e2 j( K
从技术上讲用 delete 操作符是从 JavaScript 对象中删除属性的正确方法。与上一个方法不同,delete 将完全从对象中删除属性,但它仍然会导致原始对象的发生改变。
9 r9 D8 K8 S% S+ t$ U! P; C+ Lconst pet = {
species: 'dog',
age: 3,
name: 'celeste',
gender: 'female'
};
delete pet.gender;
Object.keys(pet); // ['species', 'age', 'name'] 三、使用对象解构& o& z! X+ u, L1 d3 u) \. X
通过用展开运算符(...)可以将需要省略特定属性的对象解构到新对象。这个技巧在需要删除多个属性时特别有用,并且不会更改原始对象。0 o7 Q' `8 w l9 p" v3 c
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']
|