数组去重的四种方法
1、indexof去重方法
遍历数组,建立新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组
function remove(arr) { var temp = []; //建立一个临时数组 for(var i = 0;i < arr.length;i++){ if (temp.indexOf(arr[i]) === -1){//如果临时数组里面没有这个数就把这个数存进去 temp.push(arr[i]); } } return temp; } var arr1 = [1,1,4,9,8,4,7,3,3,5,8,8,5,6,2]; console.log(remove(arr1));
2、先将原数组排序,在与相邻的进行比较,如果不同则存入新数组。
function remove(arr) { var newArr = arr.sort();//先排序 var temp = []; for(var i = 0;i < newArr.length;i++){ if (newArr[i] !== newArr[i+1]){ temp.push(newArr[i]); } } return temp; } var arr1 = [1,1,4,9,8,4,7,3,3,5,8,8,5,6,2]; console.log(remove(arr1));
3、数组下标法
如果当前数组的第i项在当前数组中第一次出现的位置不是i, 那么表示第i项是重复的,忽略掉。否则存入结果数组。
function remove(arr) { var temp = []; for(var i = 0;i < arr.length;i++){ //如果当前数组的第i项在当前数组中第一次出现的位置是i if (arr.indexOf(arr[i]) === i){ temp.push(arr[i]); } } return temp; } var arr1 = [1,1,4,9,8,4,7,3,3,5,8,8,5,6,2]; console.log(remove(arr1));
4、利用ES6中的set方法
function remove(arr){
//Set数据结构,它类似于数组,其成员的值都是唯一的
return Array.from(new Set(arr));// 利用Array.from将Set结构转换成数组
}
var arr1 = [1,1,4,9,8,4,7,3,3,5,8,8,5,6,2];
console.log(remove(arr1));