深度克隆

新手也能写复杂爬虫!AI+Python自动分析京东商品,提取数据不用F12 不用F12:AI自动分析京东页面,生成选择器;不用懂JS:Playwright自动渲染动态数据;不用改代码:只需配置3个参数,复制运行就能出结果。这套方案不仅适用于京东,修改提示词后还能爬取淘宝、拼多多、亚马逊等电商网站,新手只需掌握“配置参数→运行代码→查看CSV”3步,就能轻松获取任意网站的结构化数据。未来,AI会让爬虫彻底进入“零代码、零门槛”时代,新手也能轻松搞定复杂数据爬取需求。 阅读详情

基本类型(值类型)没有指向空间地址,所以基本类型没有深度浅度克隆之说,引用类型才有深度浅度克隆之说

1.引用类型基于json字符进行深度克隆

let obj1 = {name:'fuheng'}
let obj2 = JSON.parse(JSON.stringify(obj1))
console.log(obj1 === obj2);//false
obj2.name='fuyi';
console.log(obj1);//{ name: 'fuheng' }

let arr1=[1,2,3,{name:'fuarr'}]
let arr2 = JSON.parse(JSON.stringify(arr1))
arr2[3].name='fuNewArray';
console.log(arr1[3].name);//fuarr

2.基于Object.prototype.toString.call(obj)判断数据类型,进行递归赋值

//获取传入变量的类型 例如[Object Array] => Array
function getObjClass(obj) {
    let result = Object.prototype.toString.call(obj).slice(8, -1);
    if (result === 'Null') {
        return 'Null';
    } else if (result === 'Undefined') {
        return 'Undefined';
    } else {
        return result;
    }
}

function deepClone(obj) {
    let result, objType = getObjClass(obj);
    if (objType === 'Object') {
        result = {};//如果是对象,定义为对象类型
    } else if (objType === 'Array') {
        result = [];//如果是数组,定义为数组类型
    } else {
        return obj; // 如果是其他数据类型不复制,直接将数据返回
    }
    // 遍历目标 对象/数组
    for (let key in obj) {
        let value = obj[key];
        if (getObjClass(value) === "Object" || getObjClass(value) === 'Array') {
            result[key] = deepClone(value);
        } else {
            result[key] = obj[key];
        }
    }
    return result;
}


let obj3 = {username: 'fuheng',age: 18, sex: {option1: '男', option2: '女'}};
let obj4 = deepClone(obj3);
console.log(obj4 === obj3);//false
obj4.sex.option1 = '不男不女'; // 修改复制后的对象不会影响原对象
console.log(obj4);
console.log(obj3);
Captcha must be filled out,解决Kaggle新用户注册无法弹出验证提示的问题 Captcha must be filled out 阅读详情

相关推荐

Python 打包与发布陷阱:如何用 setuptools 和 PyInstaller 生成跨平台可执行文件?

使用。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1207

深度克隆与浅度克隆

javascript中对象的深度克隆 深度克隆:原不变 浅克隆:通过“=”赋值操作;基础类型:值传递;对象:引用。 以下number function string 执行的浅克隆(赋值操作),但是结果表现形式与深度克隆一致,都是原不变,相当于深克隆。 浅==深 对于基础类型可以理解赋值操作原来的不变,但是function作为引用,原也不变,是因为,函数的克隆会在内存单独开辟空间,互不影

lulalahappy123的专栏 1105

ESD镜像解密与转换全攻略:从esd-decrypter到WinNTSetup的完整流程

本文详细解析了ESD镜像的加密特性与压缩优势,并提供了从解密到转换的完整实战指南。核心步骤包括使用esd-decrypter工具解密ESD文件为WIM格式,以及如何结合WinNTSetup进行灵活的系统安装或进一步封装为可引导的ISO镜像,帮助用户高效处理官方Windows安装镜像。

weixin_29207439的博客 451

JavaScript 浅层克隆和深度克隆

浅层克隆和深度克隆1 相关知识点 浅克隆就是将栈内存中的引用复制一份,赋给一个新的变量,本质上两个指向堆内存中的同一地址,内容也相同,其中一个变化另一个内容也会变化。深克隆就是创建一个新的空对象,开辟一块内存,然后将原对象中的数据全部复制过去,完全切断两个对象间的联系。区别:浅克隆和深克隆最大的区别就是对引用值的处理了,即浅克隆之后你改我也改,深克隆之后你改我不改。2 浅层克隆3 深度克隆 3.4 hasOwnProperty() 方法会返回一个布尔值,指示对象自身属性中是否具有指定的属性,即是否有指定的键

Yuki_yuhan的博客 3853

有限元中的对称魔法:用1/6模型算整个涡轮叶片(含MATLAB代码)

本文深入解析了有限元分析中针对循环对称结构的高效求解策略。通过利用涡轮叶片等结构的几何重复性,仅需对1/6基本扇区建模并施加循环对称条件,即可精确推演整体力学行为,大幅降低计算规模。文章从数学原理推导到MATLAB代码实现,提供了完整的实战指南,适用于旋转机械的静力、模态及谐响应分析。

fire9的博客 310

自动驾驶技术路线之争:纯视觉与多模态融合的成本与性能博弈

本文深入剖析了自动驾驶领域两大主流技术路线——纯视觉与多模态融合的本质差异。文章从成本结构、性能博弈与商业逻辑等多维度展开,揭示了纯视觉方案在硬件成本与数据算力投入上的权衡,以及多模态融合方案在安全冗余与感知稳定性方面的优势。这场技术路线之争,实则是车企在性能、成本与商业化落地之间寻求平衡的综合博弈。

weixin_29038303的博客 390

啥是对象的浅度克隆和深度克隆?

深度克隆 or 浅度克隆

果子爸聊技术 1万+

时序约束实战:从setup/hold到时钟路径约束的深度解析

本文深度解析数字设计中的时序约束实战,重点探讨如何从setup/hold检查的核心原理出发,理解并应用时钟路径约束。文章通过剖析Path Requirement的计算逻辑,结合同频、倍频及异步时钟域等典型场景,提供了从解读时序报告到编写、调试SDC约束的系统方法,帮助工程师有效应对复杂SoC设计中的时序收敛挑战。

weixin_29291185的博客 105

js深度克隆和浅度克隆

“使用JavaScript深度克隆一个对象。” 这是一个出现概率很高的面试题,下面就来总结下,二者的区别以及其代码。科普一下: js一般有两种不同数据类型的值: 基本类型(包括undefined,Null,boolean,String,Number),按值传递; 引用类型(包括数组,对象),按址传递,引用类型在值传递的时候是内存中的地址。1.概念浅度克隆:基本类型为值传递,对象仍为引用传递。

匪鉴 2724

【深度解析】AURIX TC387 UCB Flash架构与避坑指南(第一篇)

摘要:UCB(用户配置块)是AURIX TC3xx芯片启动与安全的关键配置区域,位于DFLASH0存储区。每个512字节的UCB包含启动模式、安全设置等关键参数,并通过强制CRC32校验确保完整性。UCB分为启动头(UCB_BMHD)、安全配置(UCB_ORIG)及其备份(UCB_COPY)三种主要类型。不同于常规Flash,UCB具有自动擦除特性,错误配置可能导致芯片永久锁死。开发中应谨慎修改UCB,必须同时编程原始和备份版本,并确保正确的CRC校验。后续文章将详细介绍UCB编程方法和调试技巧。

2511_94612429的博客 1233

从零开始:使用Verilog在FPGA上实现8051微控制器的完整指南

8051微控制器是一种8位微控制器,由Intel在1980年代初推出。它包括一个CPU、一些RAM和ROM、I/O端口、定时器和串行通信接口。由于其简单的架构和强大的功能,8051已经成为了嵌入式系统设计的首选。FPGA是一种集成电路,设计师可以按照自己的需求进行编程。与传统的ASIC(应用特定集成电路)相比,FPGA提供了更高的灵活性,允许在硬件级别进行快速原型设计和迭代。这里,我们定义了一些基本的输入/输出端口,如时钟clk、复位reset、数据输入/输出和地址输入/输出。

qq_38334677的博客 1331

List深度克隆

/** * @Description: List深度克隆 * @Param: source 源集合 * @Return: java.util.List<T> * @Author: CWR * @Date: 2019/12/26 16:17 */ public static <T> List<T> deepCopy(List<T> sou...

BigpotR 716

线性代数 --- 置换矩阵 (Permutation matrix)

置换矩阵 - permutation matrix

松下J27录放机 3万+

js实现深度克隆

深度克隆 克隆或者拷贝分为2种: 浅度克隆 、 深度克隆 。 浅度克隆 :基本类型为值传递,对象仍为引用传递。 深度克隆 :所有元素或属性均完全克隆,并于原引用类型完全独立,即,在后面修改对象的属性的时候,原对象不会被修改。 实现深度克隆: 代码及注释: // 参数deep: true 表示深度克隆 否则 浅克隆 Object.prototype.clone = function(deep){ // 获取到调用函数的对象 // this

qq_53489791的博客 1889

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

如何在 JavaScript 中进行深度克隆?

JSON 方法适用于简单对象的深度克隆,但不支持函数、日期、正则表达式等。手动递归克隆是最灵活的方式,可以处理多种类型,但需要编写额外的代码。****是现代浏览器中的原生方法,支持更多的数据类型,但兼容性较差。**第三方库(如 Lodash)**提供了可靠的深度克隆实现,适用于复杂应用,但增加了项目依赖。在实际项目中,根据需求选择适合的方法。如果你的项目依赖较少,且需要处理复杂数据类型,手动实现或者使用是不错的选择。

向着太阳迎着光 1710

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

深度克隆(js)

使用深度克隆的原因:当用浅克隆克隆 <script> function clone(origin, target) { var target = target || {}, //用来判断该对象得属性是数组还是对象 str = Object.prototype.toString, arr = "[object Array]" for (v

weixin_45805570的博客 314

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

js对象深度克隆

什么是深度克隆,通俗的说:就是在给你一个对象的前提下,你创建一个和这个对象一模一样的对象,所有属性和值都相等,并且修改新对象的属性不会影响旧的对象。 网上常见的两种比较简洁的方式: 方式1:这个方式像极了我们的原型继承,所以我暂时叫他原型式克隆

hnyysly的专栏 1211

JS深度克隆代码实现

js深度克隆js对象组成说对象的深度克隆之前,要先明白JS 中对象的组成。 以一句话说js中一切皆对象具体数据类型分为两种: - 原始数据类型 - 引用数据类型 原始数据类型:其中存储的是对象的实际地址。eg. number、string、boolean、还有两个特殊的null、undefined 引用数据类型:其中存储的是对象的引用地址。eg. array、fu

哎 8111

关于javascript的深度克隆

js的深度克隆可以是一个非常深入的话题,如果能把深度克隆函数写得比较好,基本可以认为对js这门语言掌握的程度就很高了。 先帖两个参考文章,后面再慢慢填坑吧: 参考文章1:考虑了一些基本的情况,例如function原型、REG对象、自引用等。 参考文章2:考虑得更多,增加了内存爆栈的情况。 参考文章3:相对比较基础,从实用角度,可以使用jquery.extent(),可以使用loadsh工具库。 对...

iamlongalong的博客 259

浅度克隆和深度克隆

优快云-markdown编辑器 使用示例 目录 用 [TOC]来生成目录: 文章目录优快云-markdown编辑器 使用示例目录快捷键Markdown及扩展表格定义列表代码块自定义字体颜色(github中看不到颜色):删除线数学公式UML 图:离线写博客浏览器兼容在csdn Markdown模式下的显示效果: 本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体...

hyly_zhard的博客 645

JS的深度克隆,利用构造函数原型深度克隆

我爱撸码,撸码使我感到快乐!大家好,我是Counter。今天来写写,JS中的深度克隆,这个在笔面试中,考的还是比较多的,主要是对象与数组的赋值,如果直接赋值的话,那么得到的是对象或者数组在堆里的地址,那么原有的的数据修改的话,那么克隆的数据也会随着修改,这就是浅克隆,所以这边就要使用到枚举,然后再每一项赋值,这样就可以完成一份深度克隆,这样原对象里修改属性,如果你在这对象修改之前已经克隆的话,那么...

weixin_34080903的博客 125

js深度克隆

整理以前的笔记,看到JS深度克隆觉得挺有趣,在总结一下:   深度克隆某个对象就是克隆对象的“自有属性”以及它的“原型链”,对于克隆原型链最好的办法就是使用它的构造函数,我们知道每个构造函数都有一个prototype属性指向它的原型对象,当然,原型对象也有一个constructor属性指回构造函数。所以利用子代对象的constructor( )方法可以得到子代对象的构造函数,再次利用构造函数创建

luca的博客 1108

javascript浅度克隆、深度克隆

1.对象属性浅度克隆 let clone = Object.assign({}, target) 2.对象属性深度克隆 简单的深克隆可以使用JSON.parse()和JSON.stringify(),这两个api是解析json数据的,所以只能解析除symbol外的原始类型及数组和对象 let cloneObj = JSON.parse(JSON.stringify(target)) 3....

m0_37293343的博客 296

关于JS的深度克隆

我们都知道对象分为深度克隆和浅度克隆,深度克隆是把属性和值全部都克隆成为另一个整体,而浅度克隆只是克隆对象的引用地址,引用地址还是相同的,不会发生变化。例如 对象的浅克隆 let obj={ name:'ligo', age:18 } let obj2=Object.assign(obj) obj2.work='study' console.log(obj,obj2) //obj {age: 18,name:

weixin_44926748的博客 635

java map 深度克隆_如何深度克隆一个对象

如何深度克隆一个对象在我们日常工作中经常会遇到需要去克隆一个对象比如多个地方用到的公共的图表基本参数的配置相信很多人会想到用 Object.assign, JSON.stringify 和 JSON.parse 方法去克隆一个对象,这个可以明确告诉大家这些都是些不靠谱的浅度克隆。我们先来试一下 Object.assign 在控制台执行下列操作接下来我们看下 JSON.stringify 和 JSO...

weixin_29282577的博客 1071
上一篇: HTTP网络状态码
下一篇: 子div在父div中水平垂直居中
「已注销」
博客等级 码龄7年 1粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值