js千分位

256 阅读1分钟

需求:把一个字符串分小数点前后两部分,每隔三位插入一个‘,’将其分开。

注意:本题需要考虑(1)是否存在小数点,(2)前后临界处不加‘,’。

let str = '123456.78920';
function fn(str){
    let arr = str.split('.');
    let left = '';
    let right = '';
    for(let i = arr[0].length-1; i >= 0; i--){
        left = arr[0][i] + left;   //注意是前插 而不是left += arr[0][i];
        if((arr[0].length-i)%3 === 0 && i > 0){
            left = ',' + left;
        }
    }
    if(arr.length === 2){
        for(let j = 0; j < arr[1].length; j++){
            right += arr[1][j];
            if(j % 3 === 2 && j !== 0 && j < arr[1].length-1){
                right += ','
            }
        }
        right = '.' + right;
    }
    let res = '$' + left + right;
    console.log(res);
    return res;
}
fn(str);