位置: IT常识 - 正文
目录
一、使用JSON暴力转换
二、 使用拓展运算符+解构赋值
三、 使用对象的合并,即通过Object.assign()方法
四、通过遍历对象
五、利用循环递归
推荐整理分享js中对象数据类型的深拷贝方法(5种)(js对象数据类型有哪些),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:js中对象数据类是什么,js中对象数据类有哪些,js对象类型的语法规则,js 对象数组方法,js中对象数据类有哪些,js中对象数据类有哪些,js对象数据类型有哪些,js中对象数据类是什么,内容如对您有帮助,希望把文章链接给更多的朋友!
通过JSON.stringify() 和 JSON.parse() 将对象转为字符串之后在转为对象。
var obj = {name:'123'};var obj2 = JSON.parse(JSON.stringify(obj))二、 使用拓展运算符+解构赋值该方法的局限性在于,当值为undefined、function、symbol会在转换过程中被忽略。
var obj = {name:'123',age:13};var obj2 = {...obj}三、 使用对象的合并,即通过Object.assign()方法注意:该方法的第一个参数必须是空对象
var obj = {name:'123',age:13};var obj2 = Object.assign({},obj);四、通过遍历对象var obj1 = {name:"123"};var obj2 = {};for(x in obj1) { obj2[x] = obj1[x];}五、利用循环递归以上四种方法只能进行一层拷贝,即当对象的属性值也是对象时,就无法实现该属性的深拷贝,在这里提供一种利用循环递归进行深拷贝的方法。
var obj = { name: "123", sex: { age: "小花" } }; var newObj = {}; function deepClone(obj, newObj) { var newObj = newObj || {}; for (let key in obj) { if (typeof obj[key] == 'object') { newObj[key] = (obj[key].constructor === Array) ? [] : {} deepClone(obj[key], newObj[key]); } else { newObj[key] = obj[key] } } return newObj; } console.log(deepClone(obj, newObj));//{name: "123",sex: {age: '小花'}}上一篇:基于pyecharts的中医药知识图谱可视化(pyecharts怎么用)
下一篇:火爆全网的ChatGPT让AI回答你的任何问题!国内免费用!!(火爆全网的头像男)
友情链接: 武汉网站建设