一拿到他給的面試題,感受挺容易的,不過等本身寫後發現很是考慮邏輯,以及思惟能力(我是小白)
上網百度了一波全是用正則表達式來解決的,正則這塊我只懂皮毛,因此感受有點看不明白,不過這個博客解釋挺清楚的使用正則表達式實現千位分割符前端
我這我的就是有一個毛病,感興趣的東西我就想以本身的思惟寫出來,因此如下是一個前端小白的解決思路:
將函數thousand的參數a當作3部分組合head,body,xiaoshu.列如:1314.520可當作1 314 .520這三部分組合而成。廢話少說,代碼以下:面試
<script> function thousand(a){ var arr = new Array(); var xiaoshu = ""; //用來記錄參數小數數值包括小數點 var zhengshu =""; //用來記錄參數錄整數數值 if(a<1000){ //當參數小於1000的時候直接返回參數 return a; }else{ t = a.toString(); //將整數轉換成字符串 if(t.indexOf('.')>0){ //若是參數存在小數,則記錄小數部分與整數部分 var index = t.indexOf('.'); xiaoshu = t.slice(index,t.length); zhengshu = t.slice(0,index); }else{ //不然整數部分的值就等於參數的字符類型 zhengshu = t; } var num = parseInt(zhengshu.length/3); //判斷須要插入千位分割符的個數 //將整數1234567890部分拆分爲2部分,變量head:1 變量body:123456789 var head = zhengshu.slice(0,zhengshu.length-num*3); if(head.length>0){ //若是head存在,則在head後面加個千位分隔符, head += ','; } var body = zhengshu.slice(zhengshu.length-num*3,zhengshu.length); //將body字符串123456789轉換成一個字符數組arr2 = ['123','456','789'] var arr2 = new Array(); for(var i=0;i<num;i++){ arr2.push(body.slice(i*3,i*3+3)); } body = arr2.join(','); //將數組arr2經過join(',') 方法,拼接成一個以逗號爲間隔的字符串 zhengshu = head + body; //拼接整數部分 var result = zhengshu + xiaoshu; //最後拼接整數和小數部分 return result; //返回結果 } } console.log(thousand(665565656511325161.233333)); </script>
小白敬上!正則表達式