function toThousands(num) { var result = '', counter = 0; num = (num || 0).toString(); for (var i = num.length - 1; i >= 0; i--) { counter++; result = num.charAt(i) + result; if (!(counter % 3) && i != 0) { result = ',' + result; } } return result; }
function toThousands(num) { return (num || 0).toString().replace(/(\d)(?=(?:\d{3})+$)/g, '$1,'); }
function toThousands(num) { var num = (num || 0).toString(), result = ''; while (num.length > 3) { result = ',' + num.slice(-3) + result; num = num.slice(0, num.length - 3); } if (num) { result = num + result; } return result; }
('2525235235235325').toLocaleString()
數字 | 執行50000次消耗的時間(ms) | |||
---|---|---|---|---|
方法一 | 方法二 | 方法三 | 方法四 | |
1 | 28 | 231 | 24 | 27 |
10 | 37 | 199 | 25 | 28 |
100 | 46 | 214 | 24 | 27 |
1000 | 57 | 304 | 49 | 26 |
10000 | 65 | 293 | 49 | 27 |
100000 | 75 | 307 | 55 | 28 |
方法四性能最好.但我暫時並不會使用,由於:javascript
注意:使用方法四有2個問題:java
1:要先把數字轉化成字符串才能達到表格所示的消耗時間.直接操做數據效率會打折.正則表達式
2.在我華爲的手機上有bug,並不會轉化加逗號,仍是原模原樣展示.應該是機型太老舊問題,如今手機應該沒問題,之後兼容沒問題確定首選.性能
方法二的測試結果告訴咱們,代碼長短跟性能高低沒有關係。方法三的綜合性能是最好的:測試
最後,我選擇了方法三做爲最終的優化方案。優化