首页 > 其他分享 >2024-10-10 js 深拷贝常用方法

2024-10-10 js 深拷贝常用方法

时间:2024-10-10 09:44:32浏览次数:8  
标签:10 console name js 2024 let 拷贝 序列化 log

1、json序列化以及反序列化

let a = JSON.parse(JSON.stringify(b))

2、使用lodash库插件

没有的话先安装:

npm i lodash

使用方式:

import { cloneDeep } from 'lodash';

let a = cloneDeep(b);

ps: 我当前使用的版本是@4

为什么要使用深拷贝?因为我们在开发中会经常进行赋值运算,在你需要赋值又不想污染源数据的时候就需要重新赋值,

一开始我们以为let a = b;就能够把b的值拿过来,实际上分两种情况,如果b是原始数据类型,比如Boolean、Number、String之类的值完全可以拷贝,

而对于引用数据类型,比如object、array、function等,let a = b的写法仅会拷贝的它们的引用地址,而不会拷贝内容本身,这种情况就叫浅拷贝,

当你修改了a的值,b的值也会随之被修改,如:

let b = {
        name: '123',
        status: false
    };
    let a = b;
    a.name = '456';
    console.log(b.name); // 456
    console.log(a.name); // 456

或者:

let b = ['1'];
    let a = b;
    a[0] = '45121216';
    console.log(b[0]); // 45121216
    console.log(a[0]); // 45121216

这个时候就需要使用深拷贝方式,json序列化以及反序列化和lodash库是比较常用且简单的方式,复杂一点可以使用递归方式处理等,

注意:[...b]和{...b}都属于浅拷贝方式,好了,快点检查你的代码是否存在这种不符合期望的写法吧。

 

标签:10,console,name,js,2024,let,拷贝,序列化,log
From: https://www.cnblogs.com/iuniko/p/18455664

相关文章

  • CSP2024 前集训:多校A层冲刺NOIP2024模拟赛04
    前言T1签了。T2一眼后缀数组板子,但是复杂度是\(O(nq\log(n))\)的,极限数据本地\(4\)秒,但如果您会\(O(n)\)求后缀数组的话就直接过掉了,但赛时数据貌似纯随机,遂可以直接过掉,可以优化成\(O(n^2\log(n)+nq)\)或\(O(n^2\log(n)+q)\)的,赛时想打这个但是怕常熟大和上面区别......
  • csp-s 模拟 10
    csp-s模拟10T1欧几里得的噩梦签到题?如果会线性基的话...由于位数较多直接上线性基肯定是不行的,但是由于题目给出的数在二进制下位数很少,手动模拟一下一个二进制下只有一位的数插入,发现那些二位的数变为了一条边,最后边指向的位数就是它所插入的位置,考虑二位的数其实本质上是......
  • 多校A层冲刺NOIP2024模拟赛04
    A.02表示法对要求的数二进制拆分,每一位递归求解,大于2就继续拆,是1返回\(2(0)\),是2返回\(2\),由于外层的数比较大,所以要写一个高精除低精点击查看代码#include<bits/stdc++.h>#defineintlonglongconstintmaxn=1e5+10;usingnamespacestd;intn,ans[maxn],top;str......
  • 2024年新课标全国Ⅰ卷数学真题 | 解析+命题细目
    高考真题下载链接2024年新课标全国Ⅰ卷数学真题真题图片版命题细目......
  • 浏览器指纹修改指南2024 - 命令行控制SpeechVoice指纹(七)
    引言在前几篇文章中,我们深入探讨了如何通过修改Chromium源码来定制化SpeechVoice,从而实现浏览器指纹的修改。这些方法虽然有效,但对于一些用户来说,直接修改源码可能显得过于复杂和繁琐。为了简化这一过程,本篇文章将介绍如何通过命令行来自定义浏览器指纹。通过命令行工具,您可......
  • 浏览器指纹修改指南2024 - 修改SpeechVoice指纹(六)
    1.引言在前两篇文章中,我们详细介绍了SpeechVoice在浏览器指纹中的重要性,并通过分析Chromium源码,找到了与SpeechVoice相关的关键实现文件和函数。通过这些分析,我们已经为后续的源码修改工作打下了坚实的基础。在本篇文章中,我们将正式进入源码修改的实战环节。我们将一步步指导......
  • (2024已成功)pytorch安装初学者踩过的坑
    pytorch的教学视频年头已久,而软件的版本都更新很快,于是很容易配置环境出错。这里博主分享自己踩到的坑一开始配置环境便是分水岭的第一步,大家一定要自己上手做一遍,毕竟配置环境是python学习中永远绕不开的问题了!一、没有下cuda导致pytorch无法下载gpu版本照着小土堆的视频在......
  • UpdatePack7R2 24.10.10 参数详细说明及示例
    UpdatePack7R224.10.10使用示例以下是一些使用UpdatePack7R2的示例命令:自动安装所有更新,包括InternetExplorer11,并重启计算机:CopyCodeUpdatePack7R2.exe/ie11/silent/reboot隐藏所有现有产品的更新,不更改InternetExplorer的版本,并且不重启计算机:CopyCode......
  • 2024初秋集训——提高组 #34
    A.庸医题目描述有\(N\)个医生,第\(i\)个医生建议你在\([L_i,R_i]\)天中吃\(x_{i,1},x_{i,2},\dots,x_{i,K_i}\)种药各一粒。第\(i\)种药每粒需要\(c_i\)元。如果多个医生让你吃同一种药,那么你只需吃一粒。你认为其中有一位庸医,所以对于每个医生求出按照除去他外的医......
  • 2024.10.9
    完善由合同来直接生成制令的代码publicvoidinsertOrdersByContract(Contractscontract){//查询刚刚插入的合同contract=contractsMapper.selectContractsList(contract).get(0);//1.根据合同生成唯一的总制令Ordersorders=newO......