为了账号安全,请及时绑定邮箱和手机立即绑定

js数组splice之后再push相同的元素会出现元素重复

js数组splice之后再push相同的元素会出现元素重复

达令说 2018-08-24 10:09:44
addObject:function (object) {        this.selectedObjectsId.push(object.key);//存储高亮构件ID }, removeObject:function (object) {    for(var j=0;j<this.selectedObjectsId.length;j++){       if(this.selectedObjectsId[j]===object.key){          this.selectedObjectsId.splice(j,1);       }       } }, 我先执行addObject,比如说得到 [1] 我再执行removeObject,删除1这个元素,此时数组长度确实为0了 当我再执行addObject,元素仍为1,得到的便是[1,1]如果:我先执行addObject,比如说得到 [1,2] 我再执行removeObject,删除1,2这个元素,此时数组长度确实为0了 当我再执行addObject,元素为1,得到的便是[1,1]
查看完整描述

1 回答

?
慕森王

TA贡献1777条经验 获得超3个赞

splice的时候,原数组会改变;此时会影响到原数组的length;而此时你的循环变量i的值还再加;

i==0时;假设原数组【1,2,3】,第一次你截取了1;i++

i==1了 ;数组变成了【2,3】,而这时候的a【i】==3了;相当于2已经被忽略了;

所以你这个方法逻辑是有问题的。


查看完整回答
反对 回复 2018-09-11
  • 1 回答
  • 0 关注
  • 1633 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信