java递归深度克隆_递归方法实现深度克隆原理:遍历对象、数组直到里边都是基本数据类型,然后再去复制,就是深度拷贝。...
手寫遞歸方法
//定義檢測數據類型的功能函數
function checkedType(target) {
return Object.prototype.toString.call(target).slice(8, -1)
}
//實現深度克隆---對象/數組
function clone(target) {
//判斷拷貝的數據類型
//初始化變量result 成為最終克隆的數據
let result,
targetType = checkedType(target)
if (targetType === 'object') {
result = {}
} else
if (targetType === 'Array') {
result = []
} else {
return target
}
//遍歷目標數據
for (let i in target) {
//獲取遍歷數據結構的每一項值。
let value = target[i]
//判斷目標結構里的每一值是否存在對象/數組
if (checkedType(value) === 'Object' || checkedType(value) === 'Array') {
//對象/數組里嵌套了對象/數組
//繼續遍歷獲取到value值
result[i] = clone(value)
} else {
//獲取到value值是基本的數據類型或者是函數。
result[i] = value;
}
}
return result
}
不用手寫也可以實現
JSON.parse(JSON.stringify())
原理: 用JSON.stringify將對象轉成JSON字符串,再用JSON.parse()把字符串解析成對象,一去一來,新的對象產生了,而且對象會開辟新的棧,實現深拷貝。
這種方法雖然可以實現數組或對象深拷貝,但不能處理函數。
總結
以上是生活随笔為你收集整理的java递归深度克隆_递归方法实现深度克隆原理:遍历对象、数组直到里边都是基本数据类型,然后再去复制,就是深度拷贝。...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java集合租车_Java入门第二季 租
- 下一篇: java构造字符缓冲区_java学习笔记