js关于splice的不解之处

`if(res.code == 200){

this.allData = res.data; //总数据,前端分页用到
console.log(this.allData); //这里显示12条
this.formData = res.data; //用户可见的数据
this.formData.splice(3); //取前3条数据
console.log(this.formData); //这里显示3条
console.log(this.allData); //这里为什么显示3条,this.allData我没处理啊怎么就3条了?

}`

image.png

问题我已经注释了,很不解~~

阅读 2.4k
2 个回答

splice 修改源对象,

this.allData = res.data; //总数据,前端分页用到
console.log(this.allData); //这里显示12条
this.formData = res.data

这几条语句,吧allData和formData都指向了res.data,同一个对象,修改它,引用指向的对象当然变化。
你需要的是 slice 方法

新手上路,请多包涵

1.res.data是数组,属于引用类型。
2.将res.data分别赋值给this.allData和this.formData,这两个值指向同一个内存地址。
3.当你用splice改变this.formData的时候,this.allData也一起变了
关于js基本类型和引用类型的概念可以看一下这个图解https://www.cnblogs.com/focus...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题