首先了解什麼是遞迴 簡單來說遞迴就是函式內部自己呼叫自己
使用遞迴首先要找規律 然後找出口
下面是乙個簡單的遞迴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...