JavaScript一个数组赋值给另一个数组

【逐点突破】JavaScript 数组的总结:数组简介、定义数组、赋值和使用、常用方法等 逐点突破第三期来啦!!快来看看这期都有哪些内容吧! 阅读详情

记录一次修复bug的经历

网页在更新迭代时,新版本在开发的时候莫名奇妙的会产生数据上的错误,期初还以为是cookie的储存过多导致的,因为出问题之处的新老版本代码完全一致,即在更新迭代时没有针对该处代码进行修改。

代码基本结构

这一js文件在最开始声明了多个const列表变量,然后在后面会多次引用这几个列表变量。

问题所在

新版本的网页在onload函数中加入了部分代码,这部分代码中包含了对几个const列表变量的引用,想法是新声明一个变量直接等于某个const列表变量,即声明副本,然后对副本进行修改,即只是想使用const变量中的值,修改的话只修改副本,不动原const变量。但是在JavaScript中,直接用将A列表的值用等号赋值给B列表,这就只是把B作为了A的引用,改变B会导致A也会被改变。
所以,在onload函数中加入对const列表变量的引用后,导致了原变量的改变,进而导致后面的代码的数据产生错误。

数组的深拷贝和浅拷贝。

内容引用自 https://blog.youkuaiyun.com/qq_33769914/article/details/100015740

浅拷贝,两个数组会相互影响

var array1 = [1];
var array2 = array1;
array2[1] = 2;
console.log(array1); // [1, 2]
console.log(array2); // [1, 2]

要改变array2的值而且不影响array1就要进行深拷贝,切断两个数组之间的关联。

// 1、使用扩展运算符...进行复制,需要es6语法的支持
var a = ['1','2','3']
var b = [...a];

b[3] = "4";
console.log(b); // ["1", "2", "3", "4"]
console.log(a); // ["1", "2", "3"]

// 2、使用concat或者slice
var arr1=[1];
var arr2 = arr1.concat([]); 
// 这种情况深拷贝以后,arr2 == arr1是true。也可以使用var arr4 = arr1.concat(); arr4也深拷贝了arr1.并且arr1 != arr4
// 不改变原来数组的情况下,拷贝出数组b ,且满足 b != a。使用concat()
// 或者是 var arr2 = [].concat(arr1); 
// 或者是 var arr2 = arr1.slice(); 
js 数组只传值,不传地址 问题:JS有个很严重的bug,就是如果使用 "="进行赋值的时候,若新变量的值改了,旧的变量也会跟这边 如 A = "old"; B = A;//此时A="old",B="old" 接着: B = "new";//此时A="new",B="new" 是不是很烦,原因是因为js默认是地址传值(不懂的可以参考:C语言相关的-指针及地址传值),所以解决办法用下面语法替换就行了 B =... 阅读详情

相关推荐

javascript将数组插入到另一个数组中的代码

下面的代码主要功能就是将数组arr2插入到数组arr1的index位置,需要的朋友可以参考下

js将一个数组的属性赋值到另一个数组中(数组属性映射)

1.两个数组中,分别存储了两种不同的属性值时,想把其中一个数组中的属性,能够保存到另一个数组中 要求:如果两个数组的对应id相同,则把数组B中的name属性添加到A中 数组A–包含了id和age属性 var arrayA = [ { id: 1001, age: '20' }, { id: 1002, age: '21' }, { id: 1003, age: '22' } ] 数组B–

qq_38589895的博客 1万+

C#操作SQLite数据库帮助类——SQLiteHelper

using System; using System.Collections.Generic; using System.Data.SQLite; using System.Data; namespace Com.ZCWL.Rock.Helper { public class SQLiteHelper { private static string connectionString =

跟健哥出去走走 2万+

将数组赋值给新数组, 改变新数组原数组发生变化

因此对其中一个数组的修改也会影响另一个数组。这种行为是由 JavaScript 中数组赋值的引用传递特性所导致的,不仅限于 Vue.js。实际上这两个变量共享同一个数组引用。这意味着它们指向相同的内存地址。在 Vue.js 中,当你将一个数组直接赋值给一个新的变量时,

qq_44535402的博客 1825

手把手教你如何修改YOLO11的模型结构(以CBAM和可变性卷积为例)

YOLO11修改模型结构

2401_86807530的博客 1万+

Win11内核隔离无法打开的解决方案详解

内核隔离问题的解决需遵循"先硬件后软件"的排查原则,90%以上的案例可通过驱动清理或外设断开解决。对于必须禁用该功能的用户,建议定期使用Windows Defender进行全盘扫描,并保持系统更新至最新版本。技术决策需在安全性和兼容性之间取得平衡,本文提供的多维解决方案可帮助用户构建更稳定的Windows 11使用环境。

mmoo_python的博客 4824

笔记:js数组常用方法

join():将数组内的所有元素连接在一起转换为字符串,有一个可选参数表示每个元素之间的连接符,并返回这个字符串 var arr = [1, 2, 3, 4] arr.join() //返回”1,2,3,4“ arr.join('-') //返回”1-2-3-4“ sort():将数组中的每个元素按一定条件排序后并返回排序后的新数组,一个参数(会改变原数组) 所以在排序时默认按照字母表顺序进行排列,若首字母相同,则按第二个字母的先后顺序排列。 var arr = ['cherry', 'app..

weixin_48554465的博客 1507

LangChain4j + MCP:从工具协议到生产级 Agent

这两年,很多团队都已经把「大模型问答」接入到系统里了:前端一个输入框,后端调一下 OpenAI / DeepSeek / 本地模型,返回一段回答——这类 「简单问答型」AI 功能它只能说,不会做:不会主动查数据库,不会调用你的接口,不会帮你真正执行脚本;面对复杂一点的需求,比如「帮我生成这个报表的 SQL 并执行一下」,普通 ChatGPT 式的问答就开始力不从心了。而Agent 智能体想解决的,就是这件事:不只是回答你「怎么做」,而是能自己思考、自己决定要不要用工具、再用工具把事做完。

OFFTime_we的博客 1150

JavaScript——js 将一个数组的属性赋值到另一个数组中

JavaScript——js 将一个数组的属性赋值到另一个数组中

qq_43201350的博客 1447

【tessy】软件环境配置:Keil C51 Keil uVision UVSC (Default)

本文详细说明了tessy软件如何配置【Keil C51 Keil uVision UVSC (Default)】环境,具体操作步骤和注意事项

qq_37282365的博客 599

Android面试指南及参考答案

【摘要】LesPark招聘Android开发工程师,要求3年以上经验,负责客户端功能开发与优化。岗位需掌握Java、多线程、网络编程(TCP/UDP/HTTP)及性能调试工具。面试重点考察:1)核心技术如网络协议选择(TCP可靠消息/UDP实时音视频)、内存泄漏分析;2)业务能力如图片懒加载三级缓存设计、启动速度优化案例;3)高阶系统原理如插件化框架设计;4)行为问题应对策略。建议候选人准备并发编程、JVM差异等深度知识,并量化项目优化成果,尤其关注社交应用相关的图片处理、实时通信等场景题。

郑伟强dev的专栏 798

[js] 将数组赋值给另一个数组

var a = ['北京','上海','广州'] var b = a; // 数组是引用数据类型,变量存的是内存地址, a[0] = 1; //当a改变的时候b也发生了改变 console.log(a) // [1, "上海", "广州"] console.log(b) //[1, "上海", "广州"] 数组是引用数据类型,变量存的是内存地址,var b = a;就是将a的内存地址给了b,那么a和b指向同一个地址,当a改...

qq_14993591的博客 2927

PCL 法线定向【2025最新版】

几种法线定向方法的PCL代码实现。

点云侠的博客 2801

python数组赋值给另一个数组_通过内存分析来解释 JavaScript 数组赋值问题

本文转载于 SegmentFault 社区社区专栏:夕阳下的奔跑作者:G_Koala_C起因是在逛 sf 的时候看到这样一个问题:javascript 为什么 arr 数组没有被赋值?var arr=[1,2];var arr0=[{a:1,b:2}];function fun(data){ data = arr0}fun(arr);console.log(arr) //...

weixin_39953578的博客 485

“华为杯”研究生数学建模竞赛2020年-【华为杯】E题:能见度估计与预测(附获奖论文及python代码实现)

因此,题目要求借助机场的 AMOS 观测数据中的气压、温度、湿度、风速等气象因子,达到 100% 时,空气中的水汽便会凝结成细微的水滴悬浮于空中,使地面水平的能见度下。传统的仪器探测法成本高,覆盖范围小,而基于视频的能见度检测能弥补仪器测量的不足之处,但是预测精度不高,需要进一步改。象条件,空气质量的影响,其中较为关键的影响因子是雾和霾。性过强,激光能见度仪的检测方法更为可信,但是激光能见度仪覆盖的检测范围小,安装。覆盖的交通视频路况数据间接计算得到能见度数值的方法,此方法成本较低,覆盖范围广。

getusushu的博客 2280

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

js中数组赋值给另一个数组

c++中复制数组可以用memcpy int len = 5; float a[len] = {1.0 ,1.1, 1.2, 1.3, 1.4}; float b[len]; memset(b, 0, len*sizeof(float)); memcpy(b, a, len * sizeof(float)); JS中复制数据要用点特殊方法,因为JS中的数组是引用。 var a=[1,2...

8473

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

js给两个数组赋值,改变一个,另一个也变化

js给两个数组赋值,改变一个,另一个也变化

Mojito2417的博客 1646

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

js数组赋值,修改其中一个数组的值,另一个数组也会变化

问题背景: 在vue中,我在data中定义了数组对象的结构,但后台数据不需要每项对象中的其中一个属性,如果直接删除此数组的属性,则页面显示属性的地方会出现undefind。如果赋值给另一个数组,修改另一个数组的值,同样会出现此问题。 解决方法: let newList = JSON.parse(JSON.stringify(this.questionsList)) 把要赋值的数据转成json字符串,然后再转成json数据赋值。 注意 :如果数组的每项不是对象,可以通过结构赋值的方法实现这种需求,如* ne

qdm13209211861的博客 2222

前端-js数组转对象,并且将一个对象的值赋值给另一个对象

今天碰到一个需求哈.1.需要为数组中的每一个对象添加不存在的stock(库存)属性,而这个属性是在另一个对象中 接下来上代码 吼吼~ // 需要遍历后端返回的一个数组,并且为每一个item添加stock字段 let productAttrObj = {} // 定义一个对象 res.data.productAttr[0].attrValue.map(item => { item.stock = '' let key = item.attr // 该对象的键名 let value =

weixin_52852561的博客 3709

js赋值给java 数组_javascript中把一个数组的内容全部赋值给另外一个数组

如:var a = [1,2,3,4];var b= [];b = a;这个不是把值赋值过去而是b作为a的引用,b改变的是a如何b指向的是一个新数组,a把元素值全部赋值过去?1、普通数组可以使用 var b = [].concat(a);-------------------------------------------------------------------------------...

weixin_39951181的博客 1834

关于Js中创建二维数组的坑

Js中二维数组的创建: 首先JavaScript只支持 一维数组 ,但我们可以通过一些方法实现矩阵以及多维数组 其中普通的创建方法并不会出现什么问题: (1) 利用一维数组嵌套一维数组的方式创建二维数组: let arr = [] ; a[0] = [1,2,3,4,5,6]; a[1] = [10,20,30,40,50,60] 然后使用一个 双层for循环 就可以迭代这个二维数组中的元素 所以用这种方法创建多维数组,不管有几个维度,都可以通过嵌套循环来遍历 遇到问题的方法: ![请添加图片描

OceanH的博客 1142

【VUE】数据绑定,js数组赋值,多处使用时,一处修改,另一处也会被改变

vue中数据绑定,js数组赋值,多处使用时,一处修改,另一处也会被改变 问题描述如下: this.A = [1,2,3] var B = this.A B.push(4) var C = this.A console.log(C) 此时的C会得到 [1,2,3,4],而不是 [1,2,3] 解决办法: 1、 this.A = [1,2,3] var B = JSON.parse(JSON.stringify(this.A)) B.push(4) var C = JSON.parse(JSON.

LuviaWu的博客 692

一个数组赋值给另一个数组

把一个数组赋值给另一个数组 把数组map的内容全部赋值给另一个数组a,当一个数组a改变的时候,map也发生了变化,该如何解决? var map = new Array("china","america","japan","canada"); var a = map; a.unshift("aa"); console.log(a); console.log(map); // a 结果[ "aa", ...

qq_40178216的博客 3万+

数组互相赋值内存的变化

好多同学在工作中会遇到关于数组赋值的问题,比如循环数组a去操作a的值,却发现b的值也被修改了,很困惑,不明白为什么,下面大概讲一下我的理解,希望能够对大家有所帮助。 // 声明a,给a赋初始值,这个时候会在内存中给a分配一段空间,内容是a的值对应的内存空间的指针 var a = [ { key: 2, value: '1' } ]; // 声明b,把a赋值给b,这个时候会在内存中给b...

学如逆水行舟,不进则退! 732

在JavaScript中JSON数组作为变量赋值

​ 在 JavaScript 中,如果你把一个 JSON 数组赋值给另一个变量,实际上是将该数组的引用(地址)赋值给了新变量,而不是复制整个数组。这意味着新变量和原数组实际上是同一个数组对象,它们的内容会相互影响,当你修改其中一个数组中的元素时,另外一个数组中对应的元素也会发生改变,因为它们实际上是同一个元素。3、如果你希望复制一个数组而不是共享引用,可以使用【slice() 】 方法或扩展运算符 【…这样,新数组和原数组就是两个独立的数组对象,它们的内容不再相互影响。

weixin_44380380的博客 1777

js中的数组 两个数组值相同时 一个数组改变 另一个数组跟着改变原因

演示代码 deleteTimes: function () { //初始化数组arr1 let arr1=[1,2,3,4] //使arr2的值与arr1相等 let arr2 = arr1; //改变arr1的值 ...

u013675978的博客 5445
上一篇: 将多个Excel文件的第一个sheet合并为一个Excel文件中的多个sheet
下一篇: 新手用docker真**难受
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值