在做项目的时候一般都会有增删数据的时候,特别是列表的时候,比如在选中一些列表,然后删除掉选中的数据
var arr = [1,2,3,4,5,6,7] //源数据
var delIndex = [3,2,4] //需要删除源数据的所有索引
//通俗的解释就是:把arr中的第3,2,4项都删除了
//一般删除数据我们都想到的方法是 splice(),然后我们理所当然的这样写了
for (var i=0;i<delIndex.length;i++) {
arr.splice(delIndex[i],1)
}
//你觉得这样做好像是全部删除了,但是你最后打印一下arr,你会发现不是那么一回事的,至于原因,应该想两分钟就明白的,打字解释实在麻烦
//解决的方案,利用一个小技巧,我们应该是从后往前删除
//首先给需要删除的索引的数组排序,从小到大
delIndex.sort(function(a,b){
return a > b
})
var len = delIndex.lenght
while (len--) {
arr.splice(delIndex[len])
}
//最后打印一下,就完全正确了