首页 > 其他分享 >如何优化深度克隆 deepclone

如何优化深度克隆 deepclone

时间:2023-06-15 15:55:06浏览次数:27  
标签:const 克隆 value deepclone result key 深度

普通克隆的方式 

1. 大部分会使用 序列化和反序列化的方式 , 缺点:这种方式不会对对象中的函数或者Map对象进行深度克隆。

const result = JSON.parse(JSON.stringify(value))

 

2. 手写一个deepclone函数 

//创建可回收map集合 来处理环形引用的情况 例如: obj.c = obj
const cache = new WeakMap() 

function deepclone(value){

  //如果不是对象或者null 直接返回
  if(typeof value !== "Object" || value === null){
    return value;
  }

  const cached = cache.get(value)
  if(cached){ 
    return cached 
  }

  //创建一个新的clone对象
  const result = Array.isArray(value) ? [] : {}

  //将原对象的原型设置给新对象
  Object.setPrototypeOf(result, Object.getPrototypeOf(value)); 

  for(const key in value){
    //只对对象下的可枚举属性进行克隆,原型下的属性不做clone
    if(value.hasOwnProperty(key)){
        //递归进行clone操作
        result[key] = deepclone(value[key]);
    }
  }
  
  cache.set(value, result)

  return result
}

 

标签:const,克隆,value,deepclone,result,key,深度
From: https://www.cnblogs.com/xuhuang/p/17483128.html

相关文章

  • 在数据库开发和测试期间安全地删除克隆和图像
    在这里,我提供了一个PowerShell脚本,您可以使用它来安全地删除所有克隆,然后准备好父图像,以便使用最新版本的数据库刷新所有开发和测试实例。至于回滚过程,此脚本旨在管理删除过程,以确保工作不会丢失。通过将删除脚本与安装脚本相结合,您可以在更新映像时刷新所有克隆,以反映原始数据库中......
  • 批量生成,本地推理,人工智能声音克隆框架PaddleSpeech本地批量克隆实践(Python3.10)
    云端炼丹固然是极好的,但不能否认的是,成本要比本地高得多,同时考虑到深度学习的训练相对于推理来说成本也更高,这主要是因为它需要大量的数据、计算资源和时间等资源,并且对超参数的调整也要求较高,更适合在云端进行。在推理阶段,模型的权重和参数不再调整。相反,模型根据输入数据的特征......
  • 深度学习框架Keras
    模型亮点测试集上评分为1.0数据集由sklearn自带-----------------------------------------以下为模型具体实现-----------------------------------------Step1.数据读取how数据读取?使用load_iris命令,加载鸢尾花数据集fromsklearn.datasetsimportload_irisiris=......
  • 深度学习应用篇-元学习[15]:基于度量的元学习:SNAIL、RN、PN、MN
    深度学习应用篇-元学习[15]:基于度量的元学习:SNAIL、RN、PN、MN1.SimpleNeuralAttentiveLearner(SNAIL)元学习可以被定义为一种序列到序列的问题,在现存的方法中,元学习器的瓶颈是如何去吸收同化利用过去的经验。注意力机制可以允许在历史中精准摘取某段具体的信息。SimpleN......
  • 搞深度学习/图像处理 三个必备网站
    哎,这是个悲伤的故事。猜猜领导对我说过最多的一句话是什么A:你很优秀,我看好你B:好好干,今年奖金不会少C:辛苦了D:最近有啥进展E:这你都不会啊F:这个不对,再改改很显然,肯定不是A,不然我叹啥气呀......
  • 深度学习用于疾病预后-第二课第二周第1-5节-基于树的模型用于医学预后
    本周,我们将使用决策树(DecisionTrees)构建我们的第一个机器学习模型。树(trees)在医学应用中非常有用的的原因是:1️⃣它们处理连续和分类数据的能力,2️⃣它们的可解释性以及训练速度。我们将使用树来模拟在医学数据中观察到的非线性(non-linear)关系。当然,我们将构建我们的第一个基于机......
  • 深度学习用于疾病预后-第二课第一周第4-7节 医学预后案例欣赏+作业解析
    第二课第一周第4-7节医学预后案例欣赏+作业解析视频地址:B>Tina-姐预后的案例在这节课中,我们将看看预后临床例子。看看预后任务的输入和输出是什么样子的,以及我们如何权衡输入之间的权重。我们可以把预后模型看作一个系统,它把病人的资料(profile)作为输入,并输出病人的风险评分。pro......
  • 深度学习-错误集锦
    1. target=target.cuda(async=True)  AttributeError:'list'objecthasnoattribute'cuda'查看自己的target类型,原为['1','0','1','1']。这种列表试字符串型。而应该修改为torch.tensor类型。才能用于网络计算简单改为:先改为numpy再转换为tensor,搞定!lab......
  • 机器学习/深度学习前沿技术,论文,数据,源码?这个网站统统都有,必须收藏!
    废话不多,就是这个网站。https://paperswithcode.com/目录1.有事没事浏览一下最新技术2.3597个公开数据集1.有事没事浏览一下最新技术点击网页最上方,BrowseState-of-the-Art。里面涵盖了各个领域的最新技术论文,数据,以及论文代码。下面这个图是经上面翻译来的。主要包含以下几......
  • 深度学习图像标签标注软件labelme超详细教程
    文章目录前言一、labelme是什么?二、快速安装使用1.windows安装2.linux安装3.macos安装安装成功的哑子三、界面说明四、为图像创建类标签4.1参数介绍4.1文件夹所有文件创建分类标签4.2为文件夹所有文件创建分割标签5.其他问题5.1如何快速查看分割的json文件5.2json转png前......