1. 程式人生 > >js 數組去重常見的幾種方式

js 數組去重常見的幾種方式

設置 con 是不是 去重 下標 return array quicksort spl

  • 1.利用標記
  • var arr = [2,6,2,6,4,3,16];// arr = [2,6,4,3,16]
    function norepeat(arr){
    var res = [];
    for(var i=0;i<arr.length;i++){
    var flag = true;
    for(var j=0;j<res.length;j++){
    if(arr[i]==res[j]){
    flag = false;//將要推入新數組的數組元素 在新數組中有重復
                }
            }
            if(flag){
            res.push(arr[i]);
            }
                }
            
    return res; } console.log(norepeat(arr));

  • 2.indexOf()找對應的下標
  • function norepeat(arr){
        var newArr = [];
        for(var i=0;i<arr.length;i++){
            if(newArr.indexOf(arr[i]) == -1){
                newArr.push(arr[i]);
            }
        }
        return newArr;
    }
    var arr = [1,2,3,5,6,1,2,5];
    console.log(norepeat(arr));

  • 3.Es5叠代方法filter() +indexOf
  •   var arr = [1, 2, 3, 1, 2, 3, 5, 6, 4, 5];
            var newArr = arr.filter(function(value, index, array) {
                    console.log(value,index,array);
                    return arr.indexOf(value) == index;
                })
                alert(newArr);

  • 4.利用快速排序去重(比較麻煩的一種啦)
  •  1     function quickSort(arr) {
     2                 if(Array.isArray(arr)) {  //先判斷是不是個數組
     3                     if(arr.length <= 1) {  //設置限定條件
     4                         return arr;
     5                     }
     6                     var left = [];
     7                     var right = [];
     8                     var midIndex = Math.floor(arr.length / 2);  //找中間索引
     9                     var midValue = arr.splice(midIndex, 1);     //找中間值
    10                     for(var j = 0; j < arr.length; j++) {
    11                         if(arr[j] < midValue) {
    12                             left.push(arr[j]);
    13                         }
    14                         if(arr[j] > midValue){
    15                             right.push(arr[j]);
    16                         }
    17                     }
    18                     return quickSort(left).concat(midValue, quickSort(right));  //遞歸直至數組長度為1
    19 
    20                 } else {
    21                     alert(‘請傳個數組‘);
    22                 }
    23             }
    24             var arr1 = [6, 2, 5, 7, 21, 1,2,5];
    25             console.log(quickSort(arr1));        

js 數組去重常見的幾種方式