妙味茶馆

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: leo

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

  [复制链接]
motao 发表于 2014-2-20 16:54:15 | 显示全部楼层
  1. function test(str)
  2. {
  3.         var nub=str.length;
  4.         var iEnd=parseInt(str.length/3)==str.length/3?parseInt(str.length/3)-1:parseInt(str.length/3);
  5.         for(var i=1;i<=iEnd;i++)
  6.         {
  7.                 str=str.substring(0,nub-(i*3))+","+str.substring(nub-(i*3),str.length);
  8.         }
  9.         return str;
  10. }
复制代码
回复 支持 反对

使用道具 举报

无为 发表于 2014-2-20 20:58:06 | 显示全部楼层
BubbleV1 发表于 2014-2-20 10:34
第三题可以再简单点吧
        function test(str){
                var iRemain=str.length%3;


更简洁的可以这样写:

  1. function test( str ){
  2.   var arr = str.split('');
  3.   for(var i=arr.length-4; i>=0; i-=3)arr.splice(i,0,arr.splice(i,1),',');
  4.   return arr.join('');
  5. }
复制代码


当然,如果需要考虑到有小数的情况的话,可以这样来写:

  1. function test( str ){
  2.   var tmp = str.split('.');
  3.   var arr = tmp[0].split('');
  4.   for(var i=arr.length-4; i>=0; i-=3)arr.splice(i,0,arr.splice(i,1),',');
  5.   return arr.join('')+(tmp[1]?'.'+tmp[1]:'');
  6. }
复制代码
回复 支持 反对

使用道具 举报

BubbleV1 发表于 2014-2-21 15:58:24 | 显示全部楼层
无为 发表于 2014-2-20 20:58
更简洁的可以这样写:

function test( str ){
  var arr = str.split('');
  for(var i=arr.length-4; i>=0; i-=3)arr.splice(i+1,0,',');
  return arr.join('');
}

把这个arr.splice(i,0,arr.splice(i,1),',');
改成这样也行arr.splice(i+1,0,',');
回复 支持 反对

使用道具 举报

无为 发表于 2014-2-21 17:20:36 | 显示全部楼层
BubbleV1 发表于 2014-2-21 15:58
function test( str ){
  var arr = str.split('');
  for(var i=arr.length-4; i>=0; i-=3)arr.splice(i ...

嗯,对! 道理是一样的。
回复 支持 反对

使用道具 举报

达达 发表于 2015-6-5 18:10:34 | 显示全部楼层
爱海涛涛 发表于 2013-7-15 22:24
额,刚刚那正则有bug。又重写了一下。希望是好的。

这个和我的一样,不过字符串的我还没想到思路。
  1. function test2(str) {
  2.         var re = /(\d+)/g;
  3.         var arr = [];
  4.        
  5.         str.replace(re,function($0, $1){
  6.                 arr.push($1);
  7.         })

  8.         return arr.join(',');
  9. }
  10. alert(test2(str));
复制代码



回复 支持 反对

使用道具 举报

达达 发表于 2015-6-5 21:23:13 | 显示全部楼层
达达 发表于 2015-6-5 18:10
这个和我的一样,不过字符串的我还没想到思路。

作业题字符串方法:
  1. function test(str) {
  2.         var arr = str.split('');
  3.         var nStr = '';
  4.         var arr2 = [];
  5.         for (var i=0;i<arr.length;i++) {
  6.                 if (arr[i]>=0&&arr[i]<=9) {
  7.                         nStr += arr[i];
  8.                 }else {
  9.                         nStr += ',';
  10.                 }
  11.         }
  12.         arr = nStr.split(',');
  13.         for (var i=0;i<arr.length;i++) {
  14.                 if (arr[i]!='') {
  15.                         arr2.push(arr[i]);
  16.                 }
  17.         }
  18.         return arr2.join(',');
  19. }
  20. alert(test(str));
复制代码



回复 支持 反对

使用道具 举报

fuyanzen 发表于 2015-6-28 14:10:06 | 显示全部楼层
        var s = 'border-bottom-left';
        var s2 = s.replace(/\-(\w)/g,function(s,word){
                return word.toUpperCase();
        })
        alert(s2);

回复 支持 反对

使用道具 举报

kking 发表于 2016-10-9 22:57:13 | 显示全部楼层

这个运行出来好像是BorderBottomColor
回复 支持 反对

使用道具 举报

hughes 发表于 2016-11-11 00:19:08 | 显示全部楼层
学习了,谢谢分享
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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