js的几道面试题

字符串转驼峰函数
例如:border-left-width -> borderLeftWidth
 1     // 一般方法
 2     function fnToCamel(str){
 3         var arr = str.split('-'),
 4                 len = arr.length,
 5                 i;
 6         for(var i = 1; i < len; i++){
 7             arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].substring(1);
 8         }
 9         return arr.join(''); // 注意空字符串 默认是逗号
10     }
11     // 正则
12     function fnToCamelRE(str){
13         var re = /-(\w)/g;
14         return str.replace(re, function(arg0, arg1){
15             return arg1.toUpperCase();
16         });
17     }

 

字符串中获取出现次数最多的字符和次数
 1     // 一般方法
 2     function fnGetMost(str){
 3         var obj = {},
 4                 len = str.length,
 5                 num = 0,
 6                 i,
 7                 char;
 8 
 9         for(var i = 0; i < len; i++){
10             if(obj[str[i]]){
11                 obj[str[i]].push(str[i]);
12             }else{
13                 obj[str[i]] = [str[i]];
14             }
15         }
16 
17         for(i in obj){
18             if(num < obj[i].length){
19                 num = obj[i].length;
20                 char = obj[i][0];
21             }
22         }
23 
24         return {
25             char: char,
26             num: num
27         };
28     }
29 
30     // 正则
31     function fnGetMostRE(str){
32         var arr = str.split(''),
33                 re = /(\w)\1+/,
34                 num = 0,
35                 char;
36 
37         arr.sort();
38         str = arr.join('');
39 
40         str.replace(re, function(arg0, arg1){
41             if(arg0.length > num){
42                 num = arg0.length;
43                 char = arg1;
44             }
45         });
46         
47         return {
48             char: char,
49             num: num
50         };
51     }

 

给字符串加千分符
例如:1234567890 -> 123,456,789
 1     // 一般方法
 2     function fnGetThousand(str){
 3         var len = str.length,
 4                 num = len % 3,
 5                 arr = [],
 6                 i;
 7 
 8         if(num > 0){ // 将字符串开始的多余字符先作为整体放入数组中
 9             arr.push(str.substring(0, num));
10         }
11 
12         str = str.substring(num); // 去掉多余的字符
13         len = str.length;
14 
15         for(i = 0; i < len; i += 3){ // 三个一位存入数组
16             arr.push(str.substr(i, 3));
17         }
18         return arr.join();
19     }
20 
21     // 正则
22     function fnGetThousandRE(str){
23         var re = /(?=(?!\b)(\d{3})+$)/g;
24 
25         return str.replace(re, ',');
26     }

 

posted @ 2015-03-04 23:31  tyxloveyfq  阅读(122)  评论(0编辑  收藏  举报