假设将下面数组中凡是含有“a”的项全去了:
var arr = ['a1','c','a2','a3','a4','a5','a6','b','a7','a8','a9','a10','d']; for(let i=0; i<arr.length; i++){ if(arr[i].indexOf('a') != -1){ arr.splice(i,1); } } alert(arr);得到的结果是:c,a3,a5,b,a8,a10,d
原因是,当发现重复了,去除了,但是下个循环,不从0开始,导致遗漏了部分,知道怎么回事,就好解决了:
var arr = ['a1','c','a2','a3','a4','a5','a6','b','a7','a8','a9','a10','d']; for(let i=0; i<arr.length; i++){ if(arr[i].indexOf('a') != -1){ arr.splice(i,1); i=-1; //主要发现重复,就让i从-1开始,因为下次循环i++,会将它初始化到0 } } alert(arr);上面的结果就是正确的了:c,b,d