實現深拷貝的兩種方法

2021-10-07 17:22:52 字數 1515 閱讀 8350

首先了解什麼是遞迴 簡單來說遞迴就是函式內部自己呼叫自己

使用遞迴首先要找規律 然後找出口

下面是乙個簡單的遞迴demo 幫助大家了解下遞迴的使用技巧

// 計算1+2+3+...+10的和

function

fun(i)

return i+

fun(i-1)

} console.

log(

fun(10)

);// 10+fun(9)

// 10+9+fun(8)

// 10+9+8+fun(7)

// 10+9+8+7+fun(6)

// 10+9+8+7+6+fun(5)

// 10+9+8+7+6+5+fun(4)

// 10+9+8+7+6+5+4+fun(3)

// 10+9+8+7+6+5+4+3+fun(2)

// 10+9+8+7+6+5+4+3+2+fun(1)

// 10+9+8+7+6+5+4+3+2+1

接下來我們來看下如何使用遞迴實現深拷貝

var obj =,]

}var a=

;function

fun(newobj,oldobj)

else

if(item instanceof

object);

fun(newobj[k]

,item)

;// 4.屬於簡單資料型別

}else}}

fun(a,obj)

; console.

log(a)

;

有不懂的地方,大家可以用瀏覽器打斷點看下每一步的執行步驟

接下來介紹一種簡單的方法

var data=

}]// json 物件 作用:處理json格式的資料 其實就是陣列和物件

// json.stringify() 將陣列或物件變為json字串

var datastr=

json

.stringify

(data)

; console.

log(datastr)

;// json.parse() 將json字串轉化為 陣列或物件 並返回陣列或物件

var res=

json

.parse

(datastr)

; res.

push()

console.

log(res)

; console.

log(data)

;// json 字串 與 普通字串

// 都是字串 沒區別 json 字串長得像陣列和物件 其實是字串

// json 物件與普通物件和資料區別是啥

// 沒區別 就是普通陣列和物件 就是在 json 檔案中按照 規定寫。

深拷貝與淺拷貝的區別,實現深拷貝的幾種方法

原博位址 如何區分深拷貝與淺拷貝,簡單點來說,就是假設b複製了a,當修改a時,如果b也跟著變了,說明這是淺拷貝,拿人手短,如果b沒變,那就是深拷貝,自食其力。主要原因是不同的資料型別,在記憶體中的儲存方式不同,棧堆,基本資料型別與引用資料型別。變數和 值都存在棧中,當b複製了a,就是把這個關係複製了...

js實現深拷貝的兩種方式

一 基本資料型別 資料分為基本資料型別 string null boolean undefined symbol number 和引用資料型別。基本資料型別的特點 直接儲存在棧中的資料。引用資料型別的特點 儲存的是該物件在棧中的引用,真實資料儲存在堆中。引用資料型別在棧中儲存了指標,該指標指向堆中該...

陣列深拷貝 js深拷貝的幾種方法

1.使用遞迴 使用遞迴的方式實現陣列 物件的深拷貝function deepclone obj 進行深拷貝的不能為空,並且是物件 if obj typeof obj object else return objclone 2.通過json物件 通過js的內建物件json來進行陣列物件的深拷貝func...