对象数组的深拷贝和对象的深拷贝

高通平台camera构架sensor驱动详解 优先阅读。 阅读详情

1、对于普通数组(数组元素为数字或者字符串),深拷贝很简单,拷贝之后两个数组指针指向的存储地址不同,从而完成深拷贝

var _test = [1,2,3];//原数组
var _testCopy = 
[].concat(_test);//拷贝数组
_testCopy[0]=4;
console.log(_test);// [1,2,3]
console.log(_testCopy);//[4,2,3]

2、对于对象数组

//形如
var _objArr=[{"name":''weifeng"},{"name":"boy"}]

如果还是利用上述的[].concat()方法拷贝数组,则获取的结果仍然是浅拷贝,改变其一,统统改变,例子:

var _test = [{"name":"weifeng"},{"name":"boy"}];//原数组
var _testCopy = [].concat(_test);//拷贝数组
_testCopy[1].name="girl";
console.log(_test);// [{"name":"weifeng"},{"name":"girl"}]
console.log(_testCopy);//[{"name":"weifeng"},{"name":"girl"}]

从例子上可以看出,这种对于对象数组的拷贝,由于数组内部属性值为引用对象,因此整个拷贝还是浅拷贝,拷贝之后数组各个值的指针还是指向相同的存储地址,
那么,如何完成此类数组的深拷贝,根据普通数组的深拷贝得到启发,我拷贝一个字符串,不拷贝引用对象,拷贝字符串会新辟一个存储地址,这样就切断了引用对象的指针联系,因此,得到的方法为:

var _test = [{"name":"weifeng"},{"name":"boy"}];//原数组
var _testCopy = 
[].concat(JSON.parse(JSON.stringify(_test)));//拷贝数组,注意这行的拷贝方法
_testCopy[1].name="girl";
console.log(_test);// [{"name":"weifeng"},{"name":"boy"}]
console.log(_testCopy);//[{"name":"weifeng"},{"name":"girl"}]

至此,大功告成,一行代码完成对象数组的深拷贝!

3.对对象对深拷贝

var _testCopy = JSON.parse(JSON.stringify(_test));

机器人动力学仿真软件:Webots_(14).机器人声音仿真 Webots 中的声音仿真主要通过Sound和两种节点来实现。Sound节点用于播放预定义的音频文件,而节点则允许在仿真过程中动态生成和播放声音。这些节点可以用于模拟机器人的语音输出、报警声、环境噪音等。以下是一个示例,展示如何在控制器代码中播放预定义的声音。// 控制器代码(.c) # include <webots/robot.h> # include <webots/sound.h> # define TIME_STEP 64 const char * sound_name = "sound"; 阅读详情

相关推荐

MODBUS通讯不求人:手把手教你用三菱FX2N控制士林变频器

本文详细介绍了如何使用三菱FX2N PLC通过MODBUS协议控制士林变频器,涵盖硬件连接、参数配置、程序设计及通讯优化等关键步骤。特别针对没有内置MODBUS函数块的老款PLC,提供了CRC校验和稳定数据交换的实用解决方案,帮助工程师快速实现工业自动化设备的高效通讯。

v4w5x6的博客 226

JS中快速复制数组的方法

一、 错误实现 vararray1=newArray("1","2","3");vararray2; array2=array1; array1.length=0; alert(array2);//返回为空 这种做法是错的,因为javascript分原始类型与引用类型(与java、c#类似)。Array是引用类 型。array2得到的是引用,所以对array1的修改会影...

小唐技术博客 837

手把手教你用FPGA+AD9822搭建300DPI的CIS高速图像采集系统(附时序调试心得)

本文详细介绍了如何利用FPGA作为核心控制器,结合AD9822三通道采样保持放大器/ADC,构建一套完整的300DPI CIS高速图像采集系统。内容涵盖从CIS传感器驱动时序、AD9822寄存器配置与协同调试,到采用千兆以太网替代USB实现稳定高速数据传输的完整实战指南,并分享了关键的时序调试心得与系统集成经验。

weixin_29306261的博客 135

一行代码完成js对象数组的深拷贝

1、对于普通数组(数组元素为数字或者字符串),深拷贝很简单,拷贝之后两个数组指针指向的存储地址不同,从而完成深拷贝 var _test = [1,2,3];//原数组 var _testCopy = [].concat(_test);//拷贝数组 _testCopy[0]=4; console.log(_test);// [1,2,3] console.log(_testCopy);//

xiongqiangwin1314的专栏 1万+

13.5元低成本模拟乘法器AD633JN实测:手把手教你避开那些坑

本文以13.5元低成本模拟乘法器AD633JN为核心,通过实测搭建混沌电路的全过程,手把手教你避开电源灌流、芯片发烫、输入偏置等常见陷阱。文章详细剖析了AD633JN的比例因子、输入阻抗等关键特性,并提供了正确的电源去耦、信号耦合及稳定性布线方案,旨在帮助硬件爱好者与工程师高效利用这款高性价比芯片,节省调试时间与成本。

weixin_28432777的博客 519

openEuler 快速入门

openEuler 是一个专注于企业领域的 Linux 发行版,广泛应用于服务器、云计算和边缘计算场景。最初由华为开发,现在由 Open Atom Foundation 进行开发和管理。Open Atom Foundation 是中国第一个开源软件基金会,得到了华为、阿里巴巴、腾讯、百度等知名企业的支持,并且中国信息通信部也是该基金会的一部分。可以将 openEuler 看作是 Red Hat 或 SUSE Linux 的等价物,但它与 SUSE Linux 更为相似。

HuaweiLab_Peach的博客 2056

js如何把数组里面的某个元素或者对象复制多次

【代码】js如何把数组里面的某个元素或者对象复制多次。

weixin_43923808的博客 1020

【全部更新】2025金地杯E题山西省大学生数学建模思路代码文章教学:高速铁路牵引供电系统能耗优化

问题四将列车的运行速度与发车时间同时作为优化变量,建立联合优化模型,目标是在考虑电价机制和调度均衡性的前提下,使牵引供电系统一天内的总电费支出最小。问题三在考虑分时电价机制的基础上,基于遗传算法优化列车速度组合,使牵引供电系统一天内的总电费支出最小。然而,在实际运营中,不同时段的电价差异显著,合理安排列车的运行时间与运行速度,可有效降低系统的总电费支出。本研究聚焦于高速铁路牵引供电系统的能耗与电费优化问题,针对列车运行速度、发车时间与分时电价的综合影响,提出一系列数学模型,以实现系统能耗与电费的最小化。

xb459149247的博客 5289

js 将数组复制多份,并生成新的数组

copyArr([2,3],5) 输出:[2, 3, 2, 3, 2, 3, 2, 3, 2, 3] 代码: //复制多份数组 function copyArr(arr,num){ let res=[]; for(let i=0;i<num;i++){ res.push(...arr); } return res; }

PrimaryColor 2009

Android Input——输入系统介绍(一)

Input 系统对于提供流畅、灵敏和一致的用户交互体验至关重要,它需要在不同的设备、场景和应用中保证输入事件的正确性、及时性和安全性。Android 输入系统是一个复杂但高效的设计,旨在处理来自各种输入设备(如触摸屏、键盘等)的用户交互,并将这些交互转换为应用程序可以理解和响应的形式。EventHub:输入系统的最底层,直接与硬件通信,监听和读取输入设备的原始事件。:从 EventHub 获取原始输入事件,对其进行解析,转化为更高层次的事件,以便上层应用或服务能够理解。

小旭的专栏 1713

贝叶斯核机回归估计混合物健康效应 【BKMR包】——实操篇

使用 ggplot2包绘制 h 的截面# 绘制总体风险摘要。

三分钟热度 5383

数组对象深拷贝

数组对象深拷贝再研究

libocsdn_lean的博客 1967

3分钟学会SQL中的断点去重技术,轻松搞定连续重复数据去重问题?

传感器采集的温度数据中,存在连续重复的值,需仅在数值变化时保留记录(例如:温度从 25°C 变为 26°C 时记录一次)。:判断逻辑,current_value!若当前温度与前一行的温度不同(或为第一条记录),则保留该行。的技术,常用于时间序列或状态日志中。:将连续相同值的记录合并,只保留断点处的记录。保留断点处的记录(即温度变化时的第一条)。原始数据表 sensor_data。最终仅保留值变化的断点记录。获取前一行的温度值。

石榴姐yyds 1019

数组和对象进行深拷贝

数组深拷贝 方法一: var arr = ["a","b"]; var arrCopy=[]; for(var item in arr){ arrCopy[item] = arr[item]; } arrCopy[1]="c"; console.log(arr) // => ["a","b"] console.log(arrCopy) // ["a","c"] 方法二: var _test = [1,2,3];//原数组 var _testCopy = [].concat(_test);

qq_46472106的博客 223

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

js 数组和对象的深拷贝的方法

数组深拷贝的方法 方法一:for循环实现 var arr = [1,2,3,4,5] var arr2 = copyArr(arr) function copyArr(arr) { let res = [] for (let i = 0; i < arr.length; i++) { res.push(arr[i]) } return res ...

jyf_568的博客 452

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

数组和对象的深拷贝

错误的拷贝方式 state = { // constructor 构造函数中的 state array = ['0', '0', '0'] } const newArray = this.state.array newArray[0] = '1' newArray // ['1', '0', '0'] this.state.array // ['1', '0', '0'] 之前的...

JIANLI0123的博客 248

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

【前端】深拷贝:数组和对象

深拷贝数组 扩展运算符提供了复制数组的简便写法 const a1 = [1, 2]; // 写法一 const a2 = [...a1]; // 写法二 const [...a2] = a1; 上面的两种写法,a2都是a1的克隆。 深拷贝对象 // 写法一 const clone1 = { __proto__: Object.getPrototypeOf(obj), ...obj }; // 写法二 const clone2 = Object.assign( Object.create(Ob

loyd3的博客 348

对象和数组实现深拷贝

数据类型 在js中,有两种数据类型,基本数据类型和引用数据类型。 1:基本数据类型:string,number,boolean,null,undefined。 基本数据类型的数据存放在栈中,不可改变,属于深拷贝, 2:引用数据类型:数组Array,对象object,函数function; 引用数据类型的数据存放在堆中,是可以改变的,存放在堆中的是一个指针,属于浅拷贝。 如下例所示: /**...

weixin_45107630的博客 676

JS数组和对象的深拷贝方法

在学习JS数组和对象的深拷贝方法前,我们必须了解JS的变量存储方式,这样才能更好的了解深浅拷贝!栈:自动分配内存空间,系统自动释放,里面存放的是基本类型的值和引用类型的地址(指针)。堆:动态分配的内存,大小不定,也不会自动释放,里面存放引用类型的值。目前只是一些比较简单的深拷贝方法,还有其他深拷贝方法,未完待续…JS 的变量存储方式: 栈(stack)和堆(heap)。

drakseason的博客 1538

对象深拷贝和数组深拷贝

对象深拷贝和数组深拷贝 1、对象的深拷贝 方法1——JSON.parse(JSON.stringify(obj)) var item = {name:"小明",age:18} var abc = JSON.parse(JSON.stringify(item)) abc.name = "朱元璋" abc.age = 25 console.log(abc) // {name:"朱元璋",age:25} 方法2——Object.assign({},obj) var item = {name:"小明",ag

weixin_44867717的博客 434

数组对象的深拷贝和浅拷贝

1.什么是深拷贝和浅拷贝? 因为javascript有原始值和引用值之分,所以当浅拷贝复制数组或者对象的时候就是复制的引用,这样复制后的两个值会相互影响,深拷贝则相当于重新开辟了一快内存去存储复制的值,两个不会互相影响。 2.数组 数组的浅拷贝 { let arr = [1,2,3,4,5]; let copyArr = arr; ...

qq_43955202的博客 1438

javascript中数组和对象的深拷贝实现方法

    在js中,数组和对象的复制如果使用=号来进行复制,那只是浅拷贝。如下图演示:     如上,arr的修改,会影响arr2的值,这显然在绝大多数情况下,并不是我们所需要的结果。 一、数组的深拷贝 1.for 循环实现数组的深拷贝 for循环是非常好用的。如果不知道高级方法,通过for循环能够完成我们大多数的需求。 var arr = [1,2,3,4,5]; var arr2 = ...

杜小白的博客 806

数组以及对象的深拷贝和浅拷贝有哪些?

深拷贝深拷贝是指在复制或克隆一个数据结构时,会递归地复制所有嵌套的子对象,以创建一个全新的独立副本。深拷贝后的副本与原始对象完全独立,对副本的修改不会影响原始对象。2、浅拷贝浅拷贝是指仅复制数据结构的一层内容,而不复制嵌套的子对象。浅拷贝后的副本与原始对象共享相同的子对象,因此对副本或原始对象中共享的子对象的修改会互相影响。

m0_47791238的博客 1151

深拷贝(对象和数组的深拷贝)

对象和数组的深拷贝。arr.concat()拷贝的数组 一维数组相当于做深拷贝,多维数组相当于做浅拷贝。arr.slice()选取数组的一部分,并返回一个新数组,不修改原数组。Object.assign(参数) 简单的对象深拷贝,复杂的还是浅拷贝。: lodash官网 封装好的深拷贝 _.cloneDeep(value):递归函数 封装 原生的方法。

LxyingINGing的博客 798

数组扁平化和对象深拷贝

数组扁平化 function flatten(arr) { if (Array.isArray(arr)) { let result = [] // join split方法 // result = arr.join(',').split(',').map(item => { // return parseInt(item); // }); // toString方法 /

m0_47354578的博客 204

JS数组和对象的深拷贝

数组的浅拷贝: var arr = [1,2,3]; var newArr = arr; newArr[0] = 4; console.log(arr + ‘##’ + newArr); //输出[4,2,3]和[4,2,3] 解释:这种方式实际上只是新数组对原数组的一个引用,更改数组元素会对原数组产生影响,称为浅拷贝   数组的深拷贝: 方法一:使用slice var arr

kongjunchao159的博客 1827
上一篇: 解决vue-cli element-ui打包报错Unexpected token: operator (>)
下一篇: vue 修饰符sync
Uncle_long
博客等级 码龄10年 17粉丝 27原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值