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

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]


达令说
浏览 1634回答 1
1回答

慕森王

splice的时候,原数组会改变;此时会影响到原数组的length;而此时你的循环变量i的值还再加;i==0时;假设原数组【1,2,3】,第一次你截取了1;i++i==1了 ;数组变成了【2,3】,而这时候的a【i】==3了;相当于2已经被忽略了;所以你这个方法逻辑是有问题的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript