最近在做ionic3的项目时,遇到了一个复杂对象被赋值给多个变量,其中一个变量修改后,导致所有其他变量都跟着改变了的情况。
这个其实在 中就存在的一个问题,在type 中也是存在的。虽然type 针对深度拷贝提供了一个 .assign(target, ...source)方法来解决,但是对于嵌套的情况缺比较无力。于是笔者在综合了网上各位大佬的方案后做了一个如下的函数,该函数针对数组和一般的json复杂对象亲测有效。至于其他情况目前还没考虑到,如果有谁遇到并解决了希望能分享下,谢谢了先。
下面上代码:
//深度拷贝json对象的函数,
//source:待拷贝对象
//返回一个新的对象
DeepCopy(source: ): any
{
if(null == source || {} == source || [] == source)
{
return source;
}
let new : any;
let isArray = false;
if((source as any).length)
{
new = [];
isArray = true;
}
else
{
new = {};
isArray = false;
}
for (let key of .keys(source))
{
if(null == source[key])
{
new [key] = source[key];
}
else
{
let sub = (typeof source[key] == \' \') ? this.DeepCopy(source[key]) : source[key];
if(isArray)
{
new .push(sub);
}
else
{
new [key] = sub;
}
}
}
return new ;
}
再次感谢网上的大佬们的分享,参考文档:
继续阅读与本文标签相同的文章
-
功耗问题之后台过多WIFI 扫描
2026-05-18栏目: 教程
-
曾经风靡一时的360安全卫士为什么如今没落了?
2026-05-18栏目: 教程
-
用C语言编程,如何节省存储空间?
2026-05-18栏目: 教程
-
三元牛奶,的优势在哪里?
2026-05-18栏目: 教程
-
常浏览“成人网站”要留意了,有这2种反应,请立马关闭
2026-05-18栏目: 教程
