插件窝 干货文章 如何实现一个js深拷贝

如何实现一个js深拷贝

对象 拷贝 strong 方法 832    来源:    2024-10-19
实现 javascript 深拷贝的方法有:使用 json.parse() 和 json.stringify() 方法,将原始对象转换为 json 字符串并解析回新对象。使用递归函数遍历原始对象并创建其属性和嵌套对象的副本。使用 lodash 或 underscore 库来调用 _.clonedeep() 函数轻松实现深拷贝。

实现 JavaScript 深拷贝的方法

什么是深拷贝?

深拷贝是一种复制对象并创建新对象的方法,使得新对象包含原始对象的所有属性和子属性,包括嵌套的对象和数组。与浅拷贝不同,深拷贝不会引用原始对象中的任何内容。

如何实现深拷贝?

有多种方法可以实现 JavaScript 中的深拷贝:

1. JSON.parse() 和 JSON.stringify():

const deepCopy = JSON.parse(JSON.stringify(originalObject));

这个方法将原始对象转换为 JSON 字符串,然后将其解析回一个新的对象。这种方法可以复制所有属性类型,包括对象和数组。

2. 递归函数:

function deepCopy(object) {
  if (typeof object !== "object" || object === null) {
    return object;
  }

  if (Array.isArray(object)) {
    return object.map(deepCopy);
  }

  const newObject = {};
  for (const key in object) {
    newObject[key] = deepCopy(object[key]);
  }

  return newObject;
}

这个方法使用递归来遍历原始对象并创建其属性和嵌套对象的副本。

3. Lodash 或 Underscore 库:

这些流行的 JavaScript 库提供了 _.cloneDeep() 函数,可以轻松实现深拷贝。

const deepCopy = _.cloneDeep(originalObject);

选择方法:

选择哪种深拷贝方法取决于应用程序的特定需求。如果需要复制复杂的对象,使用递归函数或第三方库可能是最好的选择。对于简单的对象,JSON.parse() 和 JSON.stringify() 方法可能就足够了。