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]
splice的时候,原数组会改变;此时会影响到原数组的length;而此时你的循环变量i的值还再加;
i==0时;假设原数组【1,2,3】,第一次你截取了1;i++
i==1了 ;数组变成了【2,3】,而这时候的a【i】==3了;相当于2已经被忽略了;
所以你这个方法逻辑是有问题的。
你用的是什么框架啊
"我再执行removeObject,删除1,2这个元素,此时数组长度确实为0了"
只執行一次removeObject怎麼能夠把[1,2]長度變成0呢?
你的removeObject方法一次只會移除一個元素喔