vue 一个对象给另一个对象赋值后,修改任意一个,两个都会变

问题描述:vue 一个对象(data)给另一个对象(dataNew)赋值(直接赋值 或者 解构赋值)后,修改任意一个,两个都会变

原因分析:原因:对象赋值之后 只是将地址指向同一块内存空间,dataNew=data,dataNew和data指向同一块内存地址,修改dataNew后,data所指向的地址的值也会发生改变

解决方法:let dataNew: SampleItemResultUpload[] = JSON.parse(JSON.stringify(data));

import type { SampleItemResultUpload } from "@/interface";
export const uploadSampleItemResultService = (data: SampleItemResultUpload[]) => {
  // 一个对象(data)给另一个对象(dataNew)赋值(直接赋值 或者 解构赋值)后,修改任意一个,两个都会变
  // 原因:对象赋值之后 只是将地址指向同一块内存空间,dataNew=data,dataNew和data指向同一块内存地址,
  // 修改dataNew后,data所指向的地址的值也会发生改变
  // 解决方法:let dataNew: SampleItemResultUpload[] = JSON.parse(JSON.stringify(data));
  // 这样 dataNew 和 data 各自指向不同的内存地址,各自修改,互不影响
  // let dataNew = data;
  // let dataNew = [...data];
  let dataNew: SampleItemResultUpload[] = JSON.parse(JSON.stringify(data));
  // 删除多余的属性
  dataNew.forEach((item) => {
    delete item.id;
    delete item.uploadMark;
    delete item.uploadTime;
  });

  let uploadObj = {
    auth: "com",
    req: dataNew
  };
  return request.post("/sampleItemResult/upload", uploadObj, {
    params: {
      len: dataNew.length
    }
  });
};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值