千位分隔符 js 實現

2022-04-03 10:29:24 字數 920 閱讀 8390

最近被同事問到js如何實現給長數字新增千位分隔符,即 1344444 ---> 13,444,444 這是乙個很常見的前端面試題。看起來簡單,剛開始我都懶得寫。

仔細一想,挺考邏輯的,實現方法有很多種,可以用三位迴圈、字串陣列分隔,也可以使用正則。剛開自己用js實現了堆疊,**太多,不夠優雅,同時也暴露了自己原生js的生疏,事後也看到了同事們各樣的實現方法,無非都是迴圈和字串分隔,於是決心使用更優雅的正則裝逼一下。

仔細思考:

輸入:數字(考慮數字是否合法、正負號、小數點)、字串

輸出:考慮到使用場景,最好是字串

測試用例:-1234567.9012

期待輸出:-1,234,567.9012

千位分隔符貌似在《精通正規表示式》中講環視的時候作為經典範例,然而寫出來發現js不支援逆序環視,也就是 (?<=expression) (?再三考慮和嘗試之後得出以下**,只需一行!完美實現!

// 正則

function thousandbitseparator(num) )+\.)/g, function($0, $1) );

}console.log(thousandbitseparator(-1234567.9012));

// -1,234,567.9012

todo

--- update 2023年07月03日 ---

function thousandbitseparator(num) )+\.)/g, function($0, $1) ) : num.tostring().replace(/(\d)(?=(\d))/g, function($0, $1) ));

}console.log(thousandbitseparator(1000));

//1,000

JS 實現千位分隔符

將普通的數字轉換為帶千位分隔符格式的數字字串是乙個非常常見的問題,千位分隔符格式的規則是數字的整數部分每三位一組,以 分節。小數部分不分節 示例 19,351,235.235767 這裡有幾個常見的實現方法。實現思路是將數字轉換為字元陣列,再迴圈整個陣列,每三位新增乙個分隔逗號,最後再合併成字串。因...

js演算法實現千分位分隔符

var str 123456789 9,8,7,6,5,4,3,2,1 function formatcash str console.log formatcash str 複製 另外一種優化演算法,因為字串在 js 每次變化都會重新開闢記憶體,所有轉化為陣列會更加便捷 function f str...

JS給數字加千位分隔符

將普通的數字轉換為帶千位分隔符格式的數字字串是乙個非常常見的問題,千位分隔符格式的規則是數字的整數部分每三位一組,以 分節。小數部分不分節 示例 19,351,235.235767 這裡有幾個常見的實現方法。實現思路是將數字轉換為字元陣列,再迴圈整個陣列,每三位新增乙個分隔逗號,最後再合併成字串。因...