網(wǎng)站首頁 編程語言 正文
拷貝完以后,數(shù)據(jù)存放的地址不同,數(shù)據(jù)完全相同。
方式1:JSON.stringify()方式
JSON.stringify()將字符串轉(zhuǎn)化成json格式數(shù)據(jù),JSON.parse()將json字符串轉(zhuǎn)化成對象
對象中如果有函數(shù),undefined,symbol,使用過JSON.stringfy()處理之后,都會消失
let obj1 = { a: 0,
b: {
c: undefined
}
};
let obj2 = JSON.parse(JSON.stringify(obj1));
obj1.a = 1;
obj1.b.c = 1;
console.log(obj1); // { a: 1, b: { c: 1 } }
console.log(obj2); // { a: 0, b: {} }
方式2:函數(shù)庫lodash的_.cloneDeep方法
npm i lodash//先安裝
node_modules跟下面的node.js文件在一個根目錄
var _ = require('lodash');
var obj1 = {
a: 1,
b: { f: { g: 1 } },
c: [1, 2, 3]
};
var obj2 = _.cloneDeep(obj1);
console.log(obj1 === obj2);// false地址不同
方式3:手寫深拷貝,defined和function都可以復制
function deepCopy(object){
if(!object || typeof object !== 'object')
return;
let newObject = Array.isArray(object) ? [] : {};
//遍歷對象中的key
for(let key in object){
//判斷對象中有該鍵值嗎
if(object.hasOwnProperty(key)){
//如果鍵值是對象遞歸,如果不是,將這個這個鍵值存到數(shù)組中
newObject[key] =
typeof object[key] === "object" ? deepCopy(object[key]): object[key];
}
}
return newObject;
}
let obj1 ={
a:1,
b:{
c: undefined
},
sayHello(){
console.log("nihao")
}
}
let obj2 = deepCopy(obj1)
console.log(obj2)

?
原文鏈接:https://blog.csdn.net/qiuyushuofeng/article/details/125607686
相關(guān)推薦
- 2022-04-02 C#實現(xiàn)NPOI的Excel導出詳解_C#教程
- 2022-08-13 Redis - 數(shù)據(jù)結(jié)構(gòu)和持久化機制
- 2022-04-14 Python中的flask框架詳解_python
- 2022-05-12 正則判斷只能輸入大于0的正整數(shù)
- 2022-03-12 C++實現(xiàn)堆排序?qū)嵗榻B_C 語言
- 2024-02-28 CSS,文本溢出顯示省略號
- 2023-01-20 Flask框架使用異常捕獲問題_python
- 2022-02-07 使用laravel框架開發(fā)接口時post請求報錯419,get請求正常
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細win安裝深度學習環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支