对象属性删除
JavaScript 中删除对象属性的方法。
delete 运算符
const obj = { a: 1, b: 2, c: 3 };
// 删除属性
delete obj.b;
console.log(obj); // { a: 1, c: 3 }
console.log('b' in obj); // false
使用解构(不修改原对象)
const obj = { a: 1, b: 2, c: 3 };
// 排除特定属性
const { b, ...rest } = obj;
console.log(rest); // { a: 1, c: 3 }
// 排除多个属性
const { a, c, ...remaining } = obj;
console.log(remaining); // { b: 2 }
动态删除
const obj = { a: 1, b: 2, c: 3 };
// 使用变量作为键名
const keyToRemove = 'b';
delete obj[keyToRemove];
console.log(obj); // { a: 1, c: 3 }
删除数组中的对象属性
const arr = [
{ id: 1, name: 'Alice', password: '123' },
{ id: 2, name: 'Bob', password: '456' }
];
// 过滤掉不需要的属性
const cleanArr = arr.map(({ password, ...rest }) => rest);
console.log(cleanArr);
// [{ id: 1, name: 'Alice' }, { id: 2, name: 'Bob' }]
删除多个属性
const obj = { a: 1, b: 2, c: 3, d: 4 };
// 方法 1: 多次 delete
delete obj.a;
delete obj.b;
// 方法 2: 解构排除
const { a, b, ...clean } = obj;
// 方法 3: 使用 Object.fromEntries
const keysToRemove = ['a', 'b'];
const result = Object.fromEntries(
Object.entries(obj).filter(([key]) => !keysToRemove.includes(key))
);
console.log(result); // { c: 3, d: 4 }
注意事项
const obj = {
a: 1,
b: 2,
get c() { return 3; }
};
// delete 不能删除不可配置属性
const frozen = Object.freeze({ a: 1 });
delete frozen.a; // false (严格模式下会报错)
// delete 返回布尔值
const result = delete obj.a; // true
// delete 只删除属性,不返回值
const deletedValue = delete obj.b; // true
// 无法获取被删除的值
// 使用解构可以获取值
const { a: value } = obj; // 获取值