跳到主要内容

对象属性删除

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; // 获取值