IT忆 2020-06-11 19:10 采纳率: 100%
浏览 509
已采纳

我在使用forEach函数的时候,先将原始数据赋值给了一个新的变量,然后在删除新变量temp中的数据时,原始数据也发生了改变,这是为什么??

var arrObj = [5,39,6,38,64,26,14,48,59,25,239,6,];
var temp = arrObj;
arrObj.forEach(function (val, index) {
  if (val % 2 == 0) {
    temp.splice(temp.indexOf(val), 1)
  }
});
console.log(arrObj);

刚开始我使用原始数据,遍历出对应的值,然后查找出相对应的索引,在原始数据上删除。程序执行完成之后我发现,forEach函数并不能遍历出所有的元素。

于是我将原有的数据赋值给了一个新的变量,再进行数组遍历的时候,操作,新创建的数组,却发现,原有的原始数据也跟这发生了改变,

而我并没有操作原始数据

不明呗这是什么原因。

  • 写回答

3条回答 默认 最新

  • 简_洋 2020-06-12 18:47
    关注

    js的浅拷贝和深拷贝问题了。你可以去研究一下。
    点这里

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)
  • ¥20 matlab yalmip kkt 双层优化问题
  • ¥15 如何在3D高斯飞溅的渲染的场景中获得一个可控的旋转物体
  • ¥88 实在没有想法,需要个思路
  • ¥15 MATLAB报错输入参数太多
  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入