数组去重 && 快速排序 && 数组中重复元素最多的 && 深拷贝


 var arr0 = [1,3,3,3,4,4,4,4,5,5];
var arr1 = [10,9,2,5,7,34,65,48,90,103];
        var newArr=[];
       /*  for(var i=0;i<arr.length;i++){
            newArr.indexOf(arr[i])<0 && (newArr.push(arr[i]));
        } */
        // newArr = Array.from(new Set(arr));

        // 快速排序
        function quikSort(arr){
            if(arr.length<=1)return arr;
            var midIndex = Math.floor(arr.length/2);
            var midVal = arr.splice(midIndex,1)[0];

            var leftArr = [];
            var rightArr = [];
            for (var val of arr){
               if(val<midVal){leftArr.push(val)}else{rightArr.push(val)}
            }
            /* for(var k=0;k<arr.length;k++){
                if( arr[k]<midVal ){
                    leftArr.push(arr[k])
                }else{
                    rightArr.push(arr[k])
                }
            } */
            return quikSort(leftArr).concat(midVal,quikSort(rightArr));
        }
        console.log( quikSort(arr1) );

 数组中出现重复元素最多的:

function maxCountElement(arr) {  
   var obj={};
   for(var i=0;i<arr.length;i++){  
       var key=arr[i];  
       if(obj[key]){
           obj[key]++;  
       }else{  
           obj[key]=1;
       }  
   }  
 
   var maxCount=0;
   var maxElement=arr[0];
   for(var key in obj){  
       if(maxCount<obj[key]){  
           maxCount=obj[key]; 
           maxElement=key;  
       }  
   }  
   return "该数组中出现次数最多的元素:"+maxElement+"出现了"+maxCount+"次";  
    }  

对象深拷贝:

function deepCopy(obj) {
      var result = Array.isArray(obj) ? [] : {};
      for (var key in obj) {
        if (obj.hasOwnProperty(key)) {
          if (typeof obj[key] === 'object') {
            result[key] = deepCopy(obj[key]);   //递归复制
          } else {
            result[key] = obj[key];
          }
        }
      }
      return result;
    }

注: 上面的代码有一点小的瑕疵,如果数组中两个不同的元素出现的次数一样多,结果只会体现第一次遇见的次数最多的                   元素,和它次数一样多的其他元素会被忽略掉。

改进方案代码如下:

function maxCountElement(arr) {  
   var obj={};
   for(var i=0;i<arr.length;i++){  
       var key=arr[i];  
       if(obj[key]){
           obj[key]++;  
       }else{  
           obj[key]=1;
       }  
   }  
 
   var maxCount=0;
   var maxElement=arr[0];
   var eq = [];
   for(var key in obj){  
       if(maxCount < obj[key]){  
           maxCount=obj[key]; 
           maxElement=key;  
           eq.length=0;
       }else if(maxCount === obj[key]){  
           eq.push(key);
       }
   }  
   if(eq.length > 0){
       for(var j=0;j<eq.length;j++){
       maxElement+=','+eq[j];
       }
   }
   return "该数组中出现次数最多的元素:"+maxElement+"-----出现了:"+maxCount+"次";  
    }  

    var arr = [1,2,2,3,3,4,5,6];
    var res = maxCountElement(arr);

    console.log(res);