zoukankan      html  css  js  c++  java
  • 数组去重 && 快速排序 && 数组中重复元素最多的 && 深拷贝

    
    
     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);
  • 相关阅读:
    Redis作者谈Redis应用场景(转)
    程序员必读书籍及导读指南(转)
    Python迭代器包itertools(转)
    Flash 0day漏洞(CVE-2018-4878)复现
    第二届“强网杯”全国网络安全挑战赛来袭——线上赛
    网站漏洞——文件判断函数的安全风险(实战篇)
    Android逆向进阶——让你自由自在脱壳的热身运动(dex篇)
    【python入门】之教你编写自动获取金币脚本
    Python大法之从火车余票查询到打造抢Supreme神器
    读DEDECMS找后台目录有感
  • 原文地址:https://www.cnblogs.com/smile-fanyin/p/10793537.html
Copyright © 2011-2022 走看看