为什么我只改了JS数组中的一个对象的元素的值,其他对象的元素值都跟着变了
时间:2020-04-28
本文章向大家介绍为什么我只改了JS数组中的一个对象的元素的值,其他对象的元素值都跟着变了,主要包括为什么我只改了JS数组中的一个对象的元素的值,其他对象的元素值都跟着变了使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
var tmp_arr_1 = new Array();
var tmp1 = {'type':1,'plan_num':200};
tmp_arr_1.push(tmp1);
tmp_arr_1.push(tmp1);
console.log(tmp_arr_1);
tmp_arr_1[0]['type'] = '-----';
console.log('--变化一个后--');
console.log(tmp_arr_1);
return;
由于数组是引用变量 ,进行引用赋值 , 其实还是原来的数组 , 也就是说 ,我赋给tmp_arr_1,其实一直都是同一个地址里存的同一个数组 ,
所以 ,最后一次修改payArr 后 ,每个引用都一起改掉了 , 那么怎么解决呢 ?
dataList[i].payArr = JSON.parse(JSON.stringify(payArr)) ;
原理就是先把数组转换成字符串再转换成对象 ,这样会新分配一块内存新创建一个对象 ,
这是一个基础坑
var tmp_arr_2 = new Array();
var tmp1 = {'type':1,'plan_num':200};
tmp_arr_2.push(JSON.parse(JSON.stringify(tmp1)));
tmp_arr_2.push(JSON.parse(JSON.stringify(tmp1)));
console.log(tmp_arr_2);
tmp_arr_2[0]['type'] = '-----';
console.log('--变化一个后--');
console.log(tmp_arr_2);
return;
原文地址:https://www.cnblogs.com/pansidong/p/12795135.html
- 给自定义控件(Web Control)添加事件的几种方法。前两种方法可以不实现IPostBackEventHandler
- 【开源】QuickPager ASP.NET2.0分页控件 v2.0.0.2版本。
- 【开源】我的分页控件正式命名为QuickPager ASP.NET2.0分页控件
- 【开源】QuickPager ASP.NET2.0分页控件V2.0.0.1——分页控件的源码 (二)
- 高级时钟约束
- 【开源】QuickPager ASP.NET2.0分页控件V2.0.0.1——分页控件的源码(一) 主体
- 【开源】QuickPager ASP.NET2.0分页控件V2.0.0.1——支持多种数据库。让分页更加简单。
- IO约束(下)
- 可以通过基类实现的几种功能。vs2008 .net 2.0
- Python基础知识2:字典
- 桶式移位器
- 【开源】QuickPager ASP.NET2.0分页控件V2.0.0.7 增加了一个js函数的分页方式。
- FireEye报告:揭露新型工控系统恶意软件TRITON
- 【开源】QuickPager ASP.NET2.0分页控件V2.0.0.6 修改了几个小bug,使用演示。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 2.1 jvm内存模型
- 2.2 堆在整个jvm内存中的运行流程以及jvisualvm工具的使用
- 2.3 JVM内存参数设置
- 微信红包随机算法初探
- 1.1 自定义负载均衡器
- 1.2 ribbon-客户端负载均衡
- 1. feign的使用及原理
- hadoop案例实现之WordCount (计算单词出现的频数)
- ribbon源码
- feign源码
- DAO层配置绑定weblogic应用服务器的JNDI导致单元测试失败
- 1.操作系统底层工作的基本原理
- ibatis 日常问题总结
- 2.1 并发编程之java内存模型JMM & synchronize & volatile详解
- 使用intellij idea 查看Java字节码