JavaScript 如何从对象中删除键
要从JavaScript对象中删除一个键,我们可以使用delete运算符。这个delete运算符允许从对象中删除一个属性及其值。
有几种方法可以从JavaScript对象中删除一个键:
- 使用delete运算符
- 使用解构和剩余操作符
- 使用Object.assign()
- 使用Object.fromEntries()和Object.entries()
我们将通过示例来探讨上述所有的方法以及它们的基本实现。
方法1:使用delete运算符
JavaScript中的delete运算符用于从对象中删除一个属性(键值对)。
语法:
delete objectName.propertyName;
示例: 在这个示例中,使用delete关键字从details对象中删除了’age’键,只留下了’name’和’country’键。
JavaScript
const details = {
name: 'Alex',
age: 30,
country: 'Canada'
};
console.log('Original Object:', details);
delete details.age;
console.log('Object after deleting age key:', details);
输出
Original Object: { name: 'Alex', age: 30, country: 'Canada' }
Object after deleting age key: { name: 'Alex', country: 'Canada' }
方法2:使用解构和剩余操作符
使用剩余操作符的解构可以创建一个新对象,不包含指定的属性,同时保留原对象中的其余属性。
语法:
const { propertyToRemove, ...rest } = objectName;
示例: 在此示例中,从details对象中删除属性age,并使用剩余运算符将剩余属性存储在rest对象中,使用解构赋值。
Javascript
const details = {
name: 'Alex',
age: 30,
country: 'Canada'
};
console.log('orignal object', details)
// after using destructuring and rest operator
const { age, ...rest } = details;
console.log(rest);
输出
orignal object { name: 'Alex', age: 30, country: 'Canada' }
{ name: 'Alex', country: 'Canada' }
方法3:使用Object.assign()
使用Object.assign()可以通过复制除了要删除的属性之外的所有属性来创建一个没有指定属性的新对象。
语法:
const { age, ...rest } = Object.assign({}, details);
例子: 在这个例子中,使用Object.assign()来创建一个浅拷贝的details对象,但是不包含age属性。其余的属性使用剩余运算符和解构赋值存储在rest对象中。
Javascript
const details = {
name: 'Alex',
age: 30,
country: 'Canada'
};
console.log('orignal object', details)
const { age, ...rest } = Object.assign({}, details);
console.log(rest);
输出
orignal object { name: 'Alex', age: 30, country: 'Canada' }
{ name: 'Alex', country: 'Canada' }
方法4:使用 Object.fromEntries() 和 Object.entries()
在这种方法中,我们使用 Object.entries() 将对象转换为键值对数组。然后,我们使用 Array.filter() 排除具有指定键(在本例中为 ‘age’)的键值对。最后,我们使用 Object.fromEntries() 将筛选后的数组再次转换回对象。
语法:
示例: 在这个示例中,使用 Object.fromEntries() 和解构,在 details 对象中过滤掉了 ‘age’ 键,得到了 rest 对象。
Javascript
const details = {
name: 'Alex',
age: 30,
country: 'Canada'
};
const { age, ...rest } = Object.fromEntries(
Object.entries(details).filter(([key]) =>
key !== 'age'));
console.log(rest);
输出
{ name: 'Alex', country: 'Canada' }