为什么我只改了JS数组中的一个对象的元素的值,其他对象的元素值都跟着变了
2020-04-30 12:36
1221 查看
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;
相关文章推荐
- js判断一个对象数组里是否存在某个元素
- js判断一个对象数组里是否存在某个元素
- 一个短小的JS函数,用来得到仅仅包含不重复元素的数组
- 编写一段程序,将含有整数元素的vector对象复制给一个整形数组;
- 一个有趣的问题:怎么在JS的数组中去除重复元素?(JAVA实现吧..)
- js 如何判断一个对象是不是数组
- js简单算法(二)如何去除一个数组中与另一个数组中的值相同的元素
- 【java笔试】任给一个数组,其中只有一个元素是单独出现,其他是成对出现,输出单独的元素--(''左右无援''解法)
- js判断一个元素是否在数组中
- js sort方法根据数组中对象的某一个属性值进行排序
- js 的数组怎么push一个对象
- JS实现数组去重(重复的元素只保留一个)
- js语法学习之判断一个对象是否为数组
- 【原创】将一个数组中的0元素全部排到数组的右边,其他元素相对顺序保持不变。
- JS写一个去除数组中重复元素的程序
- js 获取一个数组中的部分元素
- js-随机产生一个由10个元素组成的数组
- js获取数组元素个数和对象成员数
- 编写js扩展方法判断一个数组中是否包含某个元素
- JS一趟循环消除一个数组里重复的元素