- let hashMap = new WeakMap()
- function deepCloneCicle = (obj,hashMap){
- let objClone = Array.isArray(obj) ? [] : {};
- if(hashMap.has(obj)) return hashMap.get(obj)
- if (obj && typeof obj === "object") {
- if(Object.prototype.toString.call(obj) === '[object Array]'){
- hashMap.set(obj,objClone)
- obj.foreach(item=>{
- objClone.push(deepCloneCicle (item,hashMap))
- })
- } else {
- hashMap.set(obj,objClone)
- for(let key in origin){
- if(obj.hasOwnProperty(key)){
- result[key] = deepCloneCircle(obj[key],hashMap)
- }
- }
- }
-
- } else {
- return obj
- }
- return objClone;
- }