千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術干貨  > js實現深拷貝復制的方法

js實現深拷貝復制的方法

來源:千鋒教育
發布人:zyh
時間: 2023-05-30 13:35:00 1685424900

  在 JavaScript 中實現深拷貝(Deep Copy)可以使用以下幾種方法:

  手動遞歸復制:

  使用遞歸的方式遍歷對象或數組,對每個屬性進行復制操作。當遇到對象或數組時,再遞歸調用深拷貝函數。這種方法可以處理多層嵌套的數據結構,但要注意避免循環引用。


function deepCopy(obj) {
if (typeof obj !== 'object' || obj === null) {
return obj;
}

let copy;
if (obj instanceof Array) {
copy = [];
for (let i = 0; i < obj.length; i++) {
copy[i] = deepCopy(obj[i]);
}
} else {
copy = {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
copy[key] = deepCopy(obj[key]);
}
}
}

return copy;
}

// 使用示例
const originalObj = { name: 'John', age: 25, hobbies: ['reading', 'running'] };
const copiedObj = deepCopy(originalObj);

      使用 JSON 序列化和反序列化:

  將對象轉換為 JSON 字符串,然后再將 JSON 字符串轉換回對象。這種方法簡單易用,但可能會有一些限制,例如無法復制特定類型的對象或函數。


function deepCopy(obj) {
return JSON.parse(JSON.stringify(obj));
}

// 使用示例
const originalObj = { name: 'John', age: 25, hobbies: ['reading', 'running'] };
const copiedObj = deepCopy(originalObj);

       需要注意的是,使用 JSON 序列化和反序列化的方法會丟失一些特殊的對象屬性或方法,如函數、正則表達式、日期對象等。在選擇深拷貝方法時,根據具體的需求和數據類型進行選擇。

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
久久亚洲中文字幕精品一区四,亚洲日本另类欧美一区二区,久久久久久久这里只有免费费精品,高清国产激情视频在线观看
亚洲欧洲自拍偷线一区二区 | 夜夜久久国產精品亚洲 | 日本不卡在线视频 | 婷婷色免费看片 | 在线看免费看国产 | 亚洲中文字幕自拍一区 |