📌  相关文章
📜  javascript 复制对象,除了一个属性 - Javascript (1)

📅  最后修改于: 2023-12-03 14:42:32.357000             🧑  作者: Mango

JavaScript复制对象(除了一个属性)

在JavaScript中,复制一个对象并排除掉其中的一个属性是一个常见的需求。你可能想复制一个对象,但不希望包含其中的某个敏感属性或是某些不相关的属性。本文将介绍几种实现方式。

1. 使用对象展开运算符
const originalObject = { prop1: 'value1', prop2: 'value2', prop3: 'value3' };
const { propToExclude, ...newObject } = originalObject;

在上述代码中,我们使用了对象展开运算符(...)来复制originalObject并将其中的一个属性propToExclude排除在外。新的复制对象被赋值给变量newObject

注意,这种方式只适用于浅拷贝,如果originalObject的属性是引用类型,那么在新对象newObject中,该属性仍然是原对象originalObject中的引用。

2. 使用Object.assign()
const originalObject = { prop1: 'value1', prop2: 'value2', prop3: 'value3' };
const newObject = Object.assign({}, originalObject);
delete newObject.propToExclude;

上述代码使用了Object.assign()方法将originalObject的属性复制到一个新对象中。然后,我们使用delete操作符来删除新对象中的propToExclude属性。

同样需要注意的是,该方法也是浅拷贝。

3. 使用扩展运算符和Array.reduce()
const originalObject = { prop1: 'value1', prop2: 'value2', prop3: 'value3' };
const newObject = Object.keys(originalObject).reduce((obj, key) => {
  if (key !== 'propToExclude') {
    obj[key] = originalObject[key];
  }
  return obj;
}, {});

上述代码使用了Object.keys()方法获取originalObject中的属性名,然后使用Array.reduce()方法遍历属性,将不需要排除的属性添加到新对象obj中。

这种方式同样是浅拷贝。

4. 使用JSON.parse()和JSON.stringify()
const originalObject = { prop1: 'value1', prop2: 'value2', prop3: 'value3' };
const newObject = JSON.parse(JSON.stringify(originalObject));
delete newObject.propToExclude;

上述代码使用了JSON.stringify()originalObject转为字符串,然后再使用JSON.parse()将其转为对象。这样可以实现深拷贝。

然后我们使用delete操作符来删除新对象中的propToExclude属性。

需要注意的是,当对象中存在不支持JSON序列化的属性(如函数),该方法可能会出现问题。

总结

以上介绍了几种在JavaScript中复制一个对象并排除其中一个属性的方法。每种方法都有自己的优缺点,选择适合你需求的方法来实现对象复制。

希望本文对你有所帮助!