前端筆試題及資料集錦(三)

先說在前面喔,歡迎你們發現錯誤,提供更好的方法~共同窗習~html

(2014阿里巴巴前端筆試題)請補充代碼,使mySort()能將傳入的參數按從小到大的順序顯示出來。前端

function mySort(){面試

   var args = new Array();//使用數組做爲參數存儲容器數組

   請補充你的代碼函數

   return args;//返回已經排序的數組學習

 }spa

var result = mySort(23,44,56,98,1,2,33);//傳入的參數不定code

console.log(result);//顯示結果orm

 

 

 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)

1、字符串轉駝峯寫法,例:'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>

 

2、字符串中出現最多的字符和個數

     常規寫法:利用對象字面量

 

 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、給字符串加千分符

 

常規解法:裏面包含了幾個小技巧,還挺巧妙的。先把三位多餘的部分從前面拿出來,把後面整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 = /(?=(?!\b)(\d{3})+$)/g;
11              return str.replace(re,',');
12          }
13          console.log(spli(str));

 

4、返回只包含數字類型的數組,例:'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>
相關文章
相關標籤/搜索