美文网首页
js 赋值的两个数组、对象数据会相互影响的解决方法

js 赋值的两个数组、对象数据会相互影响的解决方法

作者: 新世纪好青年 | 来源:发表于2022-02-22 10:50 被阅读0次

将 a 数组赋值给 b 数组,然后修改 a 数组中的内容,b 数组也会跟着改变。

例如:

var a = [333]
var b = a;//将a赋值给b
a[0] = 555;//将a的值改为555
console.log(b) // 打印b也是555

原因:

a 数组本质是指向数组的一个地址,更改数组元素就是更改地址存储数据的内容,b 数组也是这个地址的,所以会跟着改变。

解决办法:

浅拷贝 :如果数组元素是基本类型,就会拷贝一份,互不影响,而如果是对象或者数组,就会只拷贝对象和数组的引用,这样我们无论在新旧数组进行了修改,两者都会发生变化。

深拷贝:是指完全的拷贝一个对象,即使嵌套了对象,两者也相互分离,修改一个对象的属性,也不会影响另一个。

数组的深拷贝 :

方法:不仅可拷贝数组还能拷贝对象(但不能拷贝函数)

var a = [333]
var b = JSON.parse(JSON.stringify(a));//***
a[0] = 555;
console.log(b) // b没有改变,还是333

参考原文链接:https://blog.csdn.net/weixin_44093954/article/details/110927452
原文里有更多解决方案

相关文章

  • js 赋值的两个数组、对象数据会相互影响的解决方法

    将 a 数组赋值给 b 数组,然后修改 a 数组中的内容,b 数组也会跟着改变。 例如: 原因: a 数组本质是指...

  • JS变量类型和计算

    变量类型 1.值类型 (赋值之间不会相互影响) 2.引用类型 :对象,数组,函数 (赋值是变量指针,不是真正的...

  • 微信小程序 push对象 ,setData后出现数据重复

    因为在js中直接对对象赋值是浅拷贝,是引用原对象的值,你对对象进行操作,数组的值也会被改变 解决方法是在循环内部定...

  • ES6变量的结构赋值19-10-16

    1.理解:从对象或数组中提取数据,并赋值给变量(多个) 1.对象的结构赋值 2.数组的结构赋值

  • javascript - 数组

    检查对象是否为数组:数组是一种特殊的js对象。 js的数组可以存放不同数据类型数据吗?

  • 变量的解构赋值

    理解: 从对象或数组中提取数据, 并赋值给变量(多个) 对象的解构赋值let {n, a} = {n:'tom',...

  • ECMAScript6 -- 解构赋值

    解构赋值 数组的解构赋值 对象的解构赋值 特殊: 数组的解构赋值 如果右边不是数组,默认转换为类数组 对象的解构赋...

  • ES6解构赋值

    解构赋值 按照一定的模式,从数组或对象中把数据拿出来,对变量进行赋值 一、数组解构赋值 等号左边与右边必须都是数组...

  • JS基础:ES6关于基本语法的一些扩展

    目录一. 解构赋值 1. 数组的解构赋值 2. JS对象的解构赋值 3. 解构赋值的应用场景二. 字符串的扩展 1...

  • JS数组

    1.js数组是什么? 1.1真实的数组 其实js不是典型的数组,是用对象来模拟的数组,真实的数据应该 元素的数据类...

网友评论

      本文标题:js 赋值的两个数组、对象数据会相互影响的解决方法

      本文链接:https://www.haomeiwen.com/subject/xzfglrtx.html