您的位置:首页 > 健康 > 美食 > 前端踩坑记录:javaScript复制对象和数组,不能简单地使用赋值运算

前端踩坑记录:javaScript复制对象和数组,不能简单地使用赋值运算

2024/10/5 13:08:08 来源:https://blog.csdn.net/l_q_l/article/details/141643078  浏览:    关键词:前端踩坑记录:javaScript复制对象和数组,不能简单地使用赋值运算

问题

如图,编辑table中某行的信息,发现在编辑框中修改名称的时候,表格中的信息同步更新。。。

检查原因

编辑页面打开时,需要读取选中行的信息,并在页面中回显。代码中直接将当前行的数据对象赋值给编辑框中的表单对象了,这只是简单的让form指向了row的地址,并没有逐个的赋值其中的字段。

this.form = row;

 这样,当我在表单中更新某个字段的值的时候,我期望更新的是form中的数据,然而,因为form和row实际指向的是同一块数据空间,所以,row中的数据,也同步更新,就出现了我最开始的问题。

解决方案

那么,在获取选中行信息时,不能简单的进行赋值,而需要进行拷贝。可以使用Object.assign函数,将row中的数据拷贝到this.form中:

Object.assign(this.form,row)

数组

同理,数组存在同样的问题

 某select的Option需要在一个已有数组的基础上进行删减,但是原数组不能变。

最初使用的是newArr = arr的方式,在对newArr进行了一些列的操作后,发现arr的值成员也被修改了。

改为newArr = arr.slice() 正常。

另,如果想要实现两个数组的拼接,可用arr1 = arr1.concat(arr2)的方法

参考:JavaScript Array slice() 方法

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com