zoukankan      html  css  js  c++  java
  • 前端笔试题及资料集锦(三)

    先说在前面喔,欢迎大家发现错误,提供更好的方法~共同学习~

    (2014阿里巴巴前端笔试题)请补充代码,使mySort()能将传入的参数按从小到大的顺序显示出来。

    function mySort(){

       var args = new Array();//使用数组作为参数存储容器

       请补充你的代码

       return args;//返回已经排序的数组

     }

    var result = mySort(23,44,56,98,1,2,33);//传入的参数不定

    console.log(result);//显示结果

     1 <!DOCTYPE html>
     2 <html lang="zh">
     3 <head>
     4 <meta charset=utf-8>
     5 <title>demo</title>
     6 </head> 
     7 
     8 <style>  
     9 
    10 </style>  
    11     
    12 <body>
    13 
    14     <script>
    15       function mySort(){
    16         var args = new Array();
    17         var len = arguments.length;
    18         for(var i=0;i<len;i++){
    19           args.push(arguments[i]);
    20         }
    //由于sort()方法对数字排序不尽如人意,给他定义个比较函数
    21 function compare(num1,num2){ 22 return num1-num2; 23 } 24 args.sort(compare); 25 return args; 26 } 27 var result = mySort(50,11,15,32,46,78,100,22,9,0); 28 console.log(result); 29 30 </script> 31 </body> 32 </html>

    哈哈,最近看秒味视频觉得不错,也顺势做了些讲的题,我还是努力踏踏实实的写写代码,学好基础知识。

    嘿嘿,下面来笔面试题第三弹。(字符串part)

    一、字符串转驼峰写法,例:'border-bottom-color' --> borderBottomColor 

          常规做法:以‘-’分割,从第二个单词起首字母大写,join成串。

          

     1 <!DOCTYPE html>
     2 <html lang="zh">
     3 <head>
     4 <meta charset=utf-8>
     5 <title>字符串转驼峰</title>
     6 </head>  
     7 <style>  
     8    
     9 </style>  
    10     
    11 <body>
    12     <script>
    13         var str = 'border-bottom-color';
    14          /*这里是常规方法*/
    15         function transform(str){
    16           var arr = str.split('-');//[border,bottom,color]
    17           for(var i=1;i<arr.length;i++){
    18              arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].substring(1); //[border,Bottom,Collor]
    19           }
    20           return arr.join('');
    21         }
    22         console.log(transform(str));
    23     </script>
    24 </body>  
    25 </html>

       正则写法:正则匹配

     1 <!DOCTYPE html>
     2 <html lang="zh">
     3 <head>
     4 <meta charset=utf-8>
     5 <title>字符串转驼峰</title>
     6 </head>  
     7 <style>  
     8    
     9 </style>  
    10     
    11 <body>
    12     <script>
    13         var str = 'border-bottom-color';
    14         /*这里是正则方法*/
    15         function transform(str){
    16           //()代表正则中的第一个子项
    17            var re = /-(w)/g;
    18           // $0代表正则的整体$1代表正则中的第一个子项
    19            return str.replace(re,function($0,$1){
    20                 return $1.toUpperCase();
    21            });
    22         }
    23         console.log(transform(str));
    24     </script>
    25 </body>  
    26 </html>

    二、字符串中出现最多的字符和个数

         常规写法:利用对象字面量

     1 <!DOCTYPE html>
     2 <html lang="zh">
     3 <head>
     4 <meta charset=utf-8>
     5 <title>字符串中出现最多的字符和个数</title>
     6 </head>  
     7 <style>  
     8    
     9 </style>  
    10     
    11 <body>
    12     <script>
    13         var str = 'aaaaaakkkkkkaaaaasddd';
    14         function most(str){
    15             //不同的字符在obj中都有个数组
    16            /* obj  = {
    17               a:[],
    18               d:[]
    19             }*/
    20             var obj = {};
    21             var num = 0;
    22             var value = '';
    23             for(var i=0;i<str.length;i++){
    24                 //如果obj{}中这个字符对应的数组还没存在的话,那么给他创建个空数组
    25                 if(!obj[str[i]]){
    26                   obj[str[i]] = [];
    27                 }
    28                 //把这个字母push进它对应的数组中
    29                 obj[str[i]].push(str[i]);
    30             }
    31             for(attr in obj){
    32               if(num<obj[attr].length){
    33                 num = obj[attr].length;
    34                 //obj[attr]数组中的每个字符都是相同的
    35                 value = obj[attr][0];
    36               }
    37             }
    38             return '出现次数最多的字符是'+value+'出现了'+num+'';
    39         }
    40         console.log(most(str));
    41     </script>
    42 </body>  
    43 </html>

    正则写法:

     1 <!DOCTYPE html>
     2 <html lang="zh">
     3 <head>
     4 <meta charset=utf-8>
     5 <title>字符串中出现最多的字符和个数</title>
     6 </head>  
     7 <style>  
     8    
     9 </style>  
    10     
    11 <body>
    12     <script>
    13         var str = 'kkkkkkkaaakkkkkkaaaaasddd';
    14         function most(str){
    15              //排序,正则匹配子项
    16              var arr = str.split('');
    17              arr.sort();
    18              str = arr.join('');
    19             // 1匹配前面相同的,也就是说跟(w)相同的
    20              var re = /(w)1+/g;
    21              var num = 0;
    22              var value = '';
    23              //这里的$0就是找到的重复的整体
    24              str.replace(re,function($0,$1){
    25                  //alert($0);
    26                  if(num<$0.length){
    27                   num = $0.length;
    28                   value = $1;
    29                  }
    30              });
    31              return '出现次数最多的字符是'+value+'出现了'+num+'';
    32         }
    33 
    34         console.log(most(str));
    35     </script>
    36 </body>  
    37 </html>

    三、给字符串加千分符

    常规解法:里面包含了几个小技巧,还挺巧妙的。先把三位多余的部分从前面拿出来,把后面整3部分逗号分隔,最后把多余的加到前面。

     1 var str = '12345432';//->[]
     2          function spli(str){
     3             var iNum = str.length%3;//->0,1,2
     4             var prev = '';
     5             var arr = [];
     6             var iNow = 0;
     7             var tmp = '';
     8             //千分号是从后向前三位三位加的,所以把三位余出来的从前面提取到
     9             if(iNum !=0){
    10                 prev = str.substring(0,iNum);
    11                 arr.push(prev);
    12             }
    13             //取到多余部分后面的
    14             str = str.substring(iNum);
    15             for(var i=0;i<str.length;i++){
    16                 iNow++;
    17                 tmp += str[i];
    18                 if(iNow==3 && tmp){
    19                     //数组里面放的是三位的数
    20                     arr.push(tmp);
    21                     tmp = '';
    22                     iNow = 0;
    23                 }
    24             }
    25             return arr.join(',');
    26          }
    27          console.log(spli(str));

    正则写法:这个的正则写法比较有难度,要先搞清楚什么事前向声明和反前向声明;

     1    /*(?=) :前向声明
     2          (?!) :反前向声明
     3          var str = 'a(?=)bacad';
     4          var re =  //g;
     5          str = str.replace(re,'*');
     6          alert(str);
     7          */
     8          var str = '112345432';
     9          function spli(str){
    10              var re = /(?=(?!)(d{3})+$)/g;
    11              return str.replace(re,',');
    12          }
    13          console.log(spli(str));

    四、返回只包含数字类型的数组,例:'abc234koi45jodjnvi789' --> [234,45,789]

    还没有找到除正则外的其他比较好的方法,大家有好方法尽情指出哈。

     1 <!DOCTYPE html>
     2 <html lang="zh">
     3 <head>
     4 <meta charset=utf-8>
     5 <title>返回只包含数字类型的数组</title>
     6 </head>  
     7 <style>  
     8    
     9 </style>  
    10     
    11 <body>
    12     <script>
    13         var str = 'abc234koi45jodjnvi789';//得到[234,45,789]
    14         var re = /(d+)/g;
    15         var arr = [];
    16         str.replace(re,function($0,$1){
    17             return arr.push(parseInt($1));
    18         });
    19         console.log(arr);
    20         /*var str = 'abc234koi45jodjnvi789';
    21         console.log(str.split(/[a-z]+/g));*/
    22     </script>
    23 </body>  
    24 </html>
  • 相关阅读:
    基础篇
    模块,包
    初识面向对象
    linux在线安装jdk
    热点链接(img map area)
    oracle temp 临时表
    ajax基础代码
    Java编译执行带包名java文件
    oracle spool 用法小结
    Hadoop NameNode safemode
  • 原文地址:https://www.cnblogs.com/skylar/p/3981778.html
Copyright © 2011-2022 走看看