zoukankan      html  css  js  c++  java
  • js数组赋值,改变其中一个,另一个数组也会改变(vue中数据绑定)

    1,问题背景和原因

    在vue中,我在data定义了变量,接后台数据,数组中存的是对象,具体数据类型如下:

    data () {
        return {
          selectAssetList: {
            applyTemplateDetailList: []
          },
          applyTemplate: {
            templateName: '',
            status: 'in_use',
            applyTemplateDetailList: []
          }
        }
      }

    之后我对两个数组分别赋值,如下:

    this.selectAssetList.applyTemplateDetailList = resp.data
    this.applyTemplate.applyTemplateDetailList = resp.data

    当其中一个数组对象的某一个属性改变时,另一个也会改变

    我们都知道,数组所指向的是内存地址,直接赋值会使它们指向同一地址。(深拷贝和浅拷贝)

    2,一般解决办法

    this.selectAssetList.applyTemplateDetailList = [...resp.data]
    this.applyTemplate.applyTemplateDetailList = [...resp.data]

    显然这种办法是不能解决我的问题,原因是当这个数组没有嵌套对象和其他数据时,这种方法是可以的

    (形如:applyTemplateDetailList: []   赋值:this.applyTemplateDetailList = [...resp.data]

    3,最终解决办法

    this.selectAssetList.applyTemplateDetailList = JSON.parse(JSON.stringify(resp.data))
    this.applyTemplate.applyTemplateDetailList = JSON.parse(JSON.stringify(resp.data))

    把要赋值的数据转成json字符串,然后再转成json数据赋值

     

     

    心有所想,必有回响
  • 相关阅读:
    VBA基础一:对象、属性、方法、变量
    js画吊线图
    C++读取硬盘物理序列号-非管理员权限
    什么是句柄?
    2020年WIN7系统的几个问题处理
    静态分析:IDA逆向代码段说明 text、idata、rdata、data
    入门级汇编语法句读
    Ollydbg 单步跟踪F8
    IDA使用之旅(四)
    CSP认证201409-1-相邻数对-(Java)100分
  • 原文地址:https://www.cnblogs.com/zhulei2/p/13613059.html
Copyright © 2011-2022 走看看