-
方法一:先给数组排序,循环比较前后两个是否相等,如果相等就删除索引是i的这个,然后i--
<script> var arr = ['a', 'd', 'f', 'f', 's', 'f', 'a', 'd', 'f', 'f', 's', 'f','g']; function norepeat(arr){ arr.sort(); //先排序让大概相同的在一个位置,这里为什么说是大概相同 是因为sort排序是把元素当字 符串排序的 它和可能排成 1 1 10 11 2 20 3 for(var i = 0; i < arr.length-1;i++){ //还是两两比较 一样删除后面的 if(arr[i]==arr[i+1]){ arr.splice(i,1); //i-- 和j--同理 i--; } } return arr; } norepeat(arr); </script>
-
方法二 用一个空数组去存首次出现(indexOf)的元素
<script> var arr = ['a', 'd', 'f', 'f', 's', 'f', 'a', 'd', 'f', 'f', 's', 'f','g']; function noRepeat2(arr){ var newArr = []; for(var i = 0; i < arr.length; i++){ if(newArr.indexOf(arr[i]) == -1){//newArr中没有该元素就把该元素放到新数组中去 newArr.push(arr[i]); } } return newArr; } console.log(noRepeat2(arr)); </script>
-
方法三 循环比较如果相等的让后面的元素值为0 最后在输出的时候删除为0的
<script> var arr = ['a', 'd', 'f', 'f', 's', 'f', 'a', 'd', 'f', 'f', 's', 'f','g']; var newArr = []; //控制外循环 for(var i=0; i<arr.length-1;i++){ //内存循环 只比较后面的 for(j=i+1;j<arr.length;j++){ //如果相等就让其值等于0 if(arr[i]==arr[j]){ arr[j]=0; } } //去除值为0的 if(arr[i]==0){ continue; }else{ //放入新的数组 newArr.push(arr[i]); } } </script>
-
方法四:正则表达式去重
<script> var arr = ['a', 'd', 'f', 'f', 's', 'f', 'a', 'd', 'f', 'f', 's', 'f','g']; var str = arr.sort().join('');//先把所有相同元素放在一起 console.log(str);//aaddffffffgss var newStr = str.replace(/(.).*\1/g,"$1"); console.log(newStr);//adfgs </script>