/*去重第一种方法:遍历数组,查看对应的每个值的索引是否为当前索引,不是则重复,删除*/ var arr = [20,23,40,45,60,23,45,60,20,40,20,20,20,20,20,20,20,20]; function rmArr1(arr) { for(var i = 0; i < arr.length; i++){ if(arr.indexOf(arr[i]) != i){//查看数组中遍历的这个值是否是第一次出现索引值,不是的话则是重复数据 //移除当前重复值 arr.splice(i,1);//从索引i处删除长度为1的数据 i--; } } return arr; } document.write(rmArr1(arr)); document.write("<br>"); //去重第二种方法:双层循环,内层循环查找始终比外层循环多一个索引,如果碰到的值相同则删除 var arr1 = [20,23,40,45,60,23,45,60,20,45,45,45,45,45,45,45]; function rmArr2(arr) { for (var i = 0; i < arr1.length; i++) { for (var j = i + 1; j < arr1.length; j++) { if(arr1[i] == arr1[j]) { arr1.splice(j, 1);//删除后索引前移 j--;//索引回退,继续执行写一个索引j,即删除掉的索引值 } } } return arr; } document.write(rmArr2(arr1)); document.write("<br>"); //去重方法三:借助新的数组,当循环下标与当前值的索引一致,则添加到数组中 var arr2 = [20,23,40,45,60,23,45,60,20,45,45,45,45,45,45,45]; function rmArr3(arr) { var newArr = []; for (var i = 0; i < arr.length; i++) { if(arr.indexOf(arr[i]) == i){ newArr.push(arr[i]); } } return newArr; } document.write(rmArr3(arr2)); //去重第四种 利用新的数组 //当在数组中查找一个数据不存在时,返回一个-1的索引 var newArr = []; for (var i = 0; i < arr.length; i++) { if(newArr.indexOf(arr[i]) == -1){ newArr.push(arr[i]); } } console.log(newArr);