微信小程序中实现将数据库返回的数据对象res.data赋值给两个变量,并且这两个变量互不影响,改变一个变量中对象值的同时不影响另一个变量

背景 

今天在做功能需求的时候,遇到一个问题,就是想把获取到数据库的数据res.data(res.data是对象),赋值给两个不同(包括值和地址)的变量action1和action2,其中一个变量需要将res.data中的时间格式化。

action1用于信息展示,action2用于原始数据后续数据库添加有用。

如果直接这样操作:

 var action1 =  res.datavar action2 = res.dataaction1.starttime = util.formatTime(new Date(action1.starttime))action1.endtime = util.formatTime(new Date(action1.endtime))that.setData({action1,action2,})

实际上,action1在时间格式化后,虽然“看起来”两个变量不一样了,其实action1和action2是一样的,因为res.data为对象是引用类型,action1和action2保存的是栈内存中的地址,无论改变action1还是action2,都是改变栈内存地址所指向的堆内存中的数据。那如何解决呢?其实用js深拷贝就能解决

解决方案

为了实现目标,需要创建两个独立的变量,使它们不共享同一个引用。你可以使用深拷贝来创建res.data的副本

利用深拷贝中最简单的方式,对res.data进行序列化JSON.parse(JSON.stringify(res.data))

 var action1 =   JSON.parse(JSON.stringify(res.data))var action2 = res.dataaction1.starttime = util.formatTime(new Date(action1.starttime))action1.endtime = util.formatTime(new Date(action1.endtime))that.setData({action1,action2,})

使用 JSON.parse(JSON.stringify(res.data)) 方法创建action1的深拷贝,这样action1和action2就是两个独立的对象,修改action1不会影响action2。

当然对于解决功能上问题还有其它解决方案,以前没有用到,现在总结一波,如果这篇文章对您有所帮助,麻烦给个小🌹吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/27715.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一般简单的功能使用GIS 服务器工具还需要进行扩展开发吗?

有网友困惑怎么使用了我们的 GIS 服务器工具,一些简单的功能需不需要对服务器进行扩展开发?下面我们首先看一下标准GIS WEB服务器例如GEOSERVER,QGISSERVER、GIS数据快捷共享发布工具(建立自己的地图网站)及其它一些商…

【Python基础】内置属性

1. __name__ 查看对象名 py文件被直接运行时,__name__ __main__ py文件被导入使用,__name等于文件名 2.__doc__ 查看文档注释 3.__all__ 模块的内置属性,默认存放的是模块里面所有的对象(变量,函数名) __all__ […

【Unity】加速Unity编辑器模式启动时间

Unity每次Play之后都会Reload Script Assemblies(重新加载脚本程序集)。 如果我们没有使用很多Assem,则并不需要在播放前重新编译。 可以在设置中将此事的重新编译关闭。 在Edit > Project Settings > Editor 面板中 找到Enter Play…

OpenGL3.3_C++_Windows(3)

GLSL Shader基础 Shader(把输入转化为输出,运行在GPU上):首先要声明版本,有各自的入口点main()顶点数据上限:16个包含4分量:16 * 4 64个分量向量:容器vec。使用.x、.y、.z和.w&am…

算法设计与分析 实验2 分治法求最近点对

目录 一、实验目的 二、实验概述 三、实验内容 四、问题描述 1.实验基本要求 2.实验亮点 3.实验说明 五、算法原理和实现 1. 算法原理和实现 实验流程 数据生成 数据去重 2. 蛮力法 算法原理 实验伪代码 时间复杂度分析 3. 分治法 算法描述 算法内容 实验流…

*args和**kwargs这个在python中的意思

1、**kwargs 在Python中,是一个用于解包字典的操作符。当在函数调用时使用时,它会将字典中的键值对解包为关键字参数传递给函数。这样可以方便地将字典中的数据作为关键字参数传递给函数。 例如,如果有一个字典data {a: 1, b: 2}&#xff…

C# Winform DPI自适应方案

Winform窗体随着屏幕的DPI缩放,会引起窗体变形及字体变形。 1.设置窗体和自定义用户控件的AutoScaleMode为None 实现目标:禁止窗体因为字体大小缩放变形 因为显示的高分屏,然后操作系统的设置了字体缩放引起的。窗体默认的AutoScaleMode = Font,控件会因为高分屏自动缩放…

Java:Math 数学计算类

文章目录 一、Math二、常用API 一、Math Math 类包含执行基本数值运算的方法,例如基本指数、对数、平方根和三角函数。 二、常用API public class Main {public static void main(String[] args) {// 1、abs:求参数的绝对值System.out.println(Math.ab…

Apollo9.0 PNC源码学习之Control模块(三)—— 基于双环PID的纵向控制

本文将对Apollo的纵向控制器进行讲解,看完本文,你将会对百度Apollo的纵向控制有更深的理解 前面文章: Apollo9.0 PNC源码学习之Control模块(一) Apollo9.0 PNC源码学习之Control模块(二) 1 纵向…

Qt QListView自定义树状导航控件

大部分的软件都有多个页面,这时候就需要一个导航栏控件,通过在导航栏中选择某一栏,同时显示对应的页面。 本文代码效果如下: 本文的导航栏控件基于大佬 feiyangqingyun 的导航栏控件博客Qt/C编写自定义控件46-树状导航栏_qt之实现…

Web前端工程师自学:从入门到精通的全方位指南

Web前端工程师自学:从入门到精通的全方位指南 在数字化浪潮汹涌的今天,Web前端工程师成为了互联网行业不可或缺的重要角色。对于想要投身这一领域的初学者来说,自学是一条充满挑战与机遇的道路。本文将从四个方面、五个方面、六个方面和七个…

28.启动与暂停程序

上一个内容:27.设计注入功能界面 以它 27.设计注入功能界面 的代码为基础进行修改 点击添加游戏按钮之后就把游戏启动了 CWndINJ.cpp文件中修改: void CWndINJ::OnBnClickedButton1() {// TODO: 在此添加控件通知处理程序代码/*ExeLst.InsertItem(0, L…

Boom 3D软件下载及安装教程

简介: Boom 3D是适用于Mac和Windows系统的专业音效增强软件,旨在通过播放器,媒体或流媒体服务等介质,在不同类型的耳机上以3D环绕效果播放媒体内容。您无需使用昂贵的耳机或其他附加环绕音效增强器即可感受3D环绕音乐。 安 装 包…

如何进行LLM大模型推理优化

解密LLM大模型推理优化本质 一、LLM推理的本质以及考量点 LLM推理聚焦Transformer架构的Decoder以生成文本。过程分两步:首先,模型初始化并加载输入文本;接着,进入解码阶段,模型自回归地生成文本,直至满足…

MPLS VPN一

R1为客户,现在进行一些基本配置,来确保可以通路由 先启动OSPF跑通 在R3上 等一会 现在启动MPLS 对R3 对R4 然后在R2上 再把接口划到空间里面 原来的IP在公网里面,被清除了 然后再配置接口 查看 对R1(相当于客户) …

计算机网络 —— 一文搞懂TCP/UDP

传输层:TCP/UDP 1. TCP1.1 TCP连接管理1.2 TCP首部格式 2. UDPUDP首部格式 3. 其他传输层协议3.1 SCTP3.2 DCCP 传输层实现源端主机和目标端主机上对等实体间会话,TCP/IP中两个代表性的传输层协议分别是TCP和UDP,两者均使用端口来标识传输数据…

商品搬家到抖店

使用的工具为 张飞搬家,登录上去 张飞搬家 1 复制商品的网址 商品链接复制过去后,点击下面的开始批量复制 2 检查修改商品信息 价格啊、图片啊、各种商品属性啊,检查下,不合适的修改和补充 3 开始搬家 4 查看商品 打开抖店后…

LogicFlow 学习笔记——1. 初步使用 LogicFlow

什么是 LogicFlow LogicFlow 是一个开源的前端流程图编辑器和工作流引擎,旨在帮助开发者和业务人员在网页端创建、编辑和管理复杂的业务流程和工作流。它提供了一个直观的界面和强大的功能,使得设计和管理工作流变得更加高效和便捷。 官网地址&#xff…

计算机网络:网络层 - IP数据报的转发

计算机网络:网络层 - IP数据报的转发 基于终点转发最长前缀匹配二叉线索树路由表特殊路由特定主机路由默认路由 IP多播 基于终点转发 路由器转发报文时,是通过报文中的目的地址字段来转发的,也即是说路由器只知道终点的IP地址,根…

Java:System 系统类

文章目录 一、System二、常用API2.1 exit2.2 currentTimeMillis2.3 arraycopy 一、System System 类提供了对系统操作的API。 二、常用API 2.1 exit exit:终止运行的 Java 虚拟机0:表示正常结束非0:表示异常结束(一般用1&#…