//第一种方法,新建一个空数组,将原来的数组循环逐个与新数组的成员做比较,如果新数组没有该元素就push进来 var arr = ['a', 1, 1, 1, 2, 4, 4, 'b', 'c', 'a']; var newArr = []; var len = arr.length; for (i = 0; i < len; i++) { var flag = false; for (var member of newArr) { if (member === arr[i]) { flag = true; break } } if (!flag) { newArr.push(arr[i]) } } console.log('1111111111111111', newArr)
//第二种,两层循环,相互比较,如果相同就删除 var arr2 = [1, 2, 3, 'a', 'b', 3, 2, 'c', 'a']; var len2 = arr2.length; while (len2-- > 0) { for (let i = 0; i < len2; i++) { if(arr2[i]==arr2[len2]){ arr2.splice(i,1) break } } } console.log('2222222222222',arr2)
//3.借助indexOf()方法判断此元素在该数组中首次出现的位置下标与循环的下标是否相等 var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5]; function rep(arr) { for (var i = 0; i < arr.length; i++) { if (arr.indexOf(arr[i]) != i) { arr.splice(i,1);//删除数组元素后数组长度减1后面的元素前移 i--;//数组下标回退 } } return arr; } var a1 = rep(arr); console.log(a1);
//4.借助indexOf()和一个空数组 var arr3=['f','c',1,2,3,4,4,4,'v','f']; var newArr3=[]; for(i=0;i<arr3.length;i++){ if(newArr3.indexOf(arr3[i])<0){ newArr3.push(arr3[i]) } } console.log('33333333333333',newArr3)
//5.filter方法 var arr4 = [1, 2, 3, 1,2,5,6] var arr4temp=arr4.filter(function(ele,index,self){ return self.indexOf(ele)===index; }) console.log(arr4temp)