21xrx.com
2024-11-05 17:28:41 Tuesday
登录
文章检索 我的文章 写文章
Javascript对象的深度复制方法
2023-06-15 17:14:17 深夜i     --     --
JavaScript 对象 深度复制

Javascript中复制对象是一个非常常见的操作,但是在进行对象复制时往往会遇到浅拷贝的问题,也就是说复制出来的对象和原对象共用同一个内存地址,而不是真正意义上的复制。这时就需要使用深度复制方法来保证得到一个全新的对象。

1. 使用JSON方法进行深度复制

JSON.stringify()方法可以将一个对象转化为json字符串,而JSON.parse()方法可以将json字符串转化为一个新的对象。经过这样的转化,新的对象就是全新的、进行了深度复制的对象了。

代码示例:


function deepCopy(obj) {

 let newObj = JSON.parse(JSON.stringify(obj));

 return newObj;

}

// 测试结果

let obj = {name: "John", age: 30, city: "New York", friends: ["Mike", "Tom"]};

let newObj = deepCopy(obj);

console.log(newObj);

2. 使用递归方法进行深度复制

递归方法是使用函数递归的方式,将原对象中的每一个属性和值都进行深度复制。这种方法比较直观,但是需要注意的是,在进行深度复制时,要特别判断属性值是不是对象或者数组,因为这些类型需要继续进行递归。

代码示例:


function deepCopy(obj) {

 let newObj = {};

 for (let key in obj) {

  if (typeof obj[key] === "object") {

   newObj[key] = deepCopy(obj[key]);

  } else {

   newObj[key] = obj[key];

  }

 }

 return newObj;

}

// 测试结果

let obj = {name: "John", age: 30, city: "New York", friends: ["Mike", "Tom"]};

let newObj = deepCopy(obj);

console.log(newObj);

3. 使用Lodash库进行深度复制

Lodash是一个非常强大的JavaScript工具库,其中包含了一个cloneDeep()方法,可以非常方便地进行深度复制。使用该方法,可以直接将一个对象深度复制为一个全新的对象。

代码示例:


const _ = require("lodash");

let obj = {name: "John", age: 30, city: "New York", friends: ["Mike", "Tom"]};

let newObj = _.cloneDeep(obj);

console.log(newObj);

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复
    相似文章