javascript中json或数组深拷贝解决方法及实例
栏目: JavaScript · 发布时间: 6年前
let arr = { a:1, b:2 }
let arr2 = { ...arr }
arr.a = 1111
console.log(arr,arr2)
复制代码
2. Ojbect.assign(目标对象,源对象)--ES6
let arr = { a:1, b:2 }
let arr2 = Object.assign({},arr)
arr.a = 1111
console.log(arr,arr2)
复制代码
深拷贝多级(json,数组)包含只有一级
1.简单直接点的 JSON.parse(JSON.stringify(对象))
let arr = { a: { age: 12 }, b:2 }
let arr2 = JSON.parse(JSON.stringify(arr))
arr.a.age = 18
console.log(arr,arr2)
复制代码
2.自定义一个函数实现深度拷贝
function copy(obj){
/**
只需要三步就ok
第一步: 使用typeof判断obj是否是一个对象
第二步: 初始化一个新的对象(使用obj.constructor判断是数组还是json)
第三步: 遍历对象 将每一个元素是基本数据类型的赋值给新的对象,否则递归此方法
*/
if(typeof obj !== 'object'){
return
}
let newobj = obj.constructor === Array ? [] : {}
for(let i in obj){
newobj[i] = typeof obj[i] === 'object' ? copy(obj[i]) : obj[i]
}
return newobj
}
let arr = { a: { age: 12 }, b:2 }
let arr2 = copy(arr)
arr.a.age = 18
console.log(arr,arr2)
复制代码
3. 使用eval()函数
let arr = { a: { age: 12 }, b:2 }
let arr2 = eval("("+JSON.stringify(arr)+")")
arr.a.age = 18
console.log(arr,arr2)
复制代码
以上所述就是小编给大家介绍的《javascript中json或数组深拷贝解决方法及实例》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python Cookbook
Alex Martelli、Anna Ravenscroft、David Ascher / 高铁军 / 人民邮电出版社 / 2010-5-1 / 99.00元
本书介绍了Python应用在各个领域中的一些使用技巧和方法,从最基本的字符、文件序列、字典和排序,到进阶的面向对象编程、数据库和数据持久化、 XML处理和Web编程,再到比较高级和抽象的描述符、装饰器、元类、迭代器和生成器,均有涉及。书中还介绍了一些第三方包和库的使用,包括 Twisted、GIL、PyWin32等。本书覆盖了Python应用中的很多常见问题,并提出了通用的解决方案。书中的代码和方......一起来看看 《Python Cookbook》 这本书的介绍吧!