妙味茶馆

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: leo

[问题答疑类] 妙味课堂-JavaScript面试题系列1

  [复制链接]
700te 发表于 2013-3-25 14:26:26 | 显示全部楼层
  1. //第一题驼峰式正则解法
  2. var str="border-bottom-color";
  3. var re=/\b\w+\b/g;
  4. str=str.replace(re,function(t){
  5.         return t.substring(0,1).toUpperCase()+t.substring(1);
  6. }).replace(/-/g,"");

  7. str=str.substring(0,1).toLowerCase()+str.substring(1);
  8. alert(str)
复制代码

补充内容 (2013-3-25 15:26):
我多此一举了,楼下高人啊
回复 支持 反对

使用道具 举报

a147947 发表于 2013-3-25 14:54:13 | 显示全部楼层
  1. //题一
  2. function maxChars(str){
  3.         var str = str.split(''),
  4.         obj = {}, maxChar, count = 0;
  5.         for(var i=0,item,c; item=str[i]; i++){
  6.                 c = (obj[item]||0)+1;
  7.                 c > count && (maxChar=item,count=c);
  8.                 obj[item] = c;
  9.         }
  10.        
  11.         return '出现最多的字符是'+maxChar+', 次数是'+count;
  12. }

  13. //题二
  14. "border-bottom-color".replace(/\-(\w)/g, function(w){return w.slice(1).toUpperCase()});

  15. //题三
  16. "123456789.01".replace(/(\d{1,3})(?=(\d{3})+(?:$|\.))/g, "$1,");
复制代码
回复 支持 反对

使用道具 举报

wasd442665203 发表于 2013-3-25 15:03:49 | 显示全部楼层
1.
  1. var str1='border-bottom-color'
  2. function ChangeStr(str)
  3. {
  4.         var a=str.split('-');
  5.         var toUpperEng=''
  6.         for(var i=0;i<a.length;i++)
  7.         {
  8.                 toUpperEng+=a[i].charAt(0).toUpperCase()+a[i].substring(1);
  9.         }
  10.         return toUpperEng
  11. }
  12. alert(ChangeStr(str1))
复制代码
2.
  1. var str2='sdjksfssscfssdd'
  2. function FindMoreStr(str)
  3. {
  4.         var c={};
  5.         var num=0;
  6.         var mreStr=''
  7.         for(var i in str)
  8.         {
  9.                 c[str.charAt]=str.charAt(i);
  10.                 if(c[str.charAt(i)])
  11.                 {
  12.                         c[str.charAt(i)]++
  13.                 }
  14.                 else{c[str.charAt(i)]=1;}
  15.                 if(num<c[str.charAt(i)])
  16.                 {
  17.                         num=c[str.charAt(i)];
  18.                         mreStr=str.charAt(i)
  19.                 }
  20.         }
  21.         alert(mreStr+'&&'+num)
  22. }
  23. FindMoreStr(str2)
复制代码
3.
  1. var Num=3562123761;
  2. function ToNumber(number)
  3. {
  4.         var a='';
  5.         var b=''
  6.         var c=number.toString();
  7.         for(var i=c.length-1;i>-1;i--)
  8.         {
  9.                 if(a.length%4==3)
  10.                 {
  11.                         a+=','+c.charAt(i)       
  12.                 }
  13.                 else{a+=c.charAt(i);}
  14.         }
  15.         for(var i=a.length-1;i>-1;i--){
  16.                 b+=a.charAt(i);       
  17.         }
  18.         return b;
  19. }
  20. alert(ToNumber(Num))
复制代码

补充内容 (2013-3-25 15:07):
第二题 借鉴 700te  ………… 嗯哼
回复 支持 反对

使用道具 举报

蓝幽草 发表于 2013-3-25 15:55:19 | 显示全部楼层
第一道题正则方法:
var border="border-bottom-color";
var str = border.replace(/\b\w+\b/g, function(word){return word.substring(0,1).toUpperCase()+word.substring(1);});
console.log(str);

补充内容 (2013-3-25 16:06):
汗,刚看见上面有人也用了这方法
回复 支持 反对

使用道具 举报

simplee 发表于 2013-3-25 15:58:59 | 显示全部楼层
第一个:
  1. "border-bottom-color".replace(/\-[A-z]/g,function(oo){return oo.charAt(1).toUpperCase()})
复制代码
回复 支持 反对

使用道具 举报

woween 发表于 2013-3-25 16:02:01 | 显示全部楼层
  1. alert(Number('3562123761').toLocaleString());
  2. 这是什么道理啊!
复制代码
回复 支持 反对

使用道具 举报

a147947 发表于 2013-3-25 16:30:22 | 显示全部楼层
wasd442665203 发表于 2013-3-25 15:03
1.2.3.

补充内容 (2013-3-25 15:07):

3题可以一个for
  1. function K(num){
  2.         var str = ''+num, str1='', newArr = [], count=0, index = str.indexOf('.');
  3.         index>0 &&
  4.         (str1 = str.slice(index),
  5.         str = str.slice(0, index));
  6.        
  7.        
  8.         for(var i=str.length,len=str.length;i>=0;i--){
  9.                 newArr.push(str.charAt(i));
  10.                 !(count++%3) &&
  11.                 i!=0 &&
  12.                 i!=len &&
  13.                 newArr.push(',');
  14.         }
  15.        
  16.         return num+'加千字符:'+newArr.reverse().join('')+str1;
  17. }

  18. console.log(K(1123456789.23));
复制代码

补充内容 (2013-3-25 16:46):
还有第一题有问题:a[0].charAt(0)首字母不能大写

补充内容 (2013-3-26 10:36):
第二题
第9行似乎没什么意义吧,为什么吧str.charAt塞进{}里。另外str.charAt毕竟是函数,下面for内多次用到应该用变量引用一下,会节省性能
回复 支持 反对

使用道具 举报

蓝幽草 发表于 2013-3-25 16:58:33 | 显示全部楼层
a147947 发表于 2013-3-25 16:30
3题可以一个for

补充内容 (2013-3-25 16:46):

写个if判断从1开始就好了吧?呵呵你观察的真细致哦!
回复 支持 反对

使用道具 举报

ghostdp 发表于 2013-3-25 17:07:18 | 显示全部楼层
大家的做法基本都是正确的~看来难不到大家呀~哈哈
回复 支持 反对

使用道具 举报

展翅高飞 发表于 2013-3-28 16:40:51 | 显示全部楼层
昂缔 发表于 2013-3-25 13:35
转驼峰

var s = 'border-bottom-color'.split('-');

貌似这个还是有点问题,驼峰写法的第一个单词为小写,按照你提供的方法,第一个单词的第一个字母还是大写的
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|妙味课堂 ( 京ICP备08102442号

GMT+8, 2019-3-23 08:35 , Processed in 0.138702 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表