前端数据格式化最近常用总结

1、手机中间部分用****替换

function formatPhoneByStar(str) {
  return String(str).replace(/(\d{3})(\d+)(\d{4})/g, "$1****$3")
}

2、邮箱中间部分用****替换

function formatEmailByStar(str) {
  if (String(str).indexOf('@') > 0) {
    return String(str).replace(/(\w{1,3})(.+)(@.+)/g, "$1****$3")
  }
}

3、保留几位小数

numFilter (value) {
// 截取当前数据到小数点后两位
let realVal = parseFloat(value).toFixed(2)
return realVal
}

4、数字格式化,保留两位小数并每三位加逗号

 function number(data){
     if(data!=null){
       return data.toFixed(2).replace(/\d{1,3}(?=(\d{3})+(\.\d*)?$)/g,'$&,');
     }else{
       return ;
     }
   }

5、日期格式化

(1)有的时候,我们需要一定格式的 时间 比如 2017-05-12 08:48 这样的格式。

function formatDate1(time){
    var date = new Date(time);
 
    var year = date.getFullYear(),
        month = date.getMonth() + 1,//月份是从0开始的
        day = date.getDate(),
        hour = date.getHours(),
        min = date.getMinutes(),
        sec = date.getSeconds();
    var newTime = year + '-' +
        month + '-' +
        day + ' ' +
        hour + ':' +
        min + ':' +
        sec;
    return newTime;
};

alert(formatDate1(new Date().getTime()));  //2019-2-21 10:37:19

(2)前置0

function formatDate2(time){
    var date = new Date(time);
 
    var year = date.getFullYear(),
        month = date.getMonth()+1,//月份是从0开始的
        day = date.getDate(),
        hour = date.getHours(),
        min = date.getMinutes(),
        sec = date.getSeconds();
    var newTime = year + '-' +
        (month < 10? '0' + month : month) + '-' +
        (day < 10? '0' + day : day) + ' ' +
        (hour < 10? '0' + hour : hour) + ':' +
        (min < 10? '0' + min : min) + ':' +
        (sec < 10? '0' + sec : sec);
 
    return newTime;
};

alert(formatDate2(new Date().getTime()));  //2019-02-21 10:39:33

(3)任意格式
以上,都是按照固定的格式YY-MM-DD hh:mm:ss 输出的。要是产品突然说,改成2017年05月12这种格式,天啦撸,又要改o(╯□╰)o。那我还是写个结构好一些的吧,你们随便玩。

function formatDate(time,format='YY-MM-DD hh:mm:ss'){
    var date = new Date(time);
 
    var year = date.getFullYear(),
        month = date.getMonth()+1,//月份是从0开始的
        day = date.getDate(),
        hour = date.getHours(),
        min = date.getMinutes(),
        sec = date.getSeconds();
    var preArr = Array.apply(null,Array(10)).map(function(elem, index) {
        return '0'+index;
    });//开个长度为10的数组 格式为 ["00", "01", "02", "03", "04", "05", "06", "07", "08", "09"]
 
    var newTime = format.replace(/YY/g,year)
        .replace(/MM/g,preArr[month]||month)
        .replace(/DD/g,preArr[day]||day)
        .replace(/hh/g,preArr[hour]||hour)
        .replace(/mm/g,preArr[min]||min)
        .replace(/ss/g,preArr[sec]||sec);
 
    return newTime;
};
 
    alert(formatDate(new Date().getTime()));  //2019-02-21 10:45:54
    alert(formatDate(new Date().getTime(),'YY年MM月DD日'));//2019年02月21日
    alert(formatDate(new Date().getTime(),'今天是YY/MM/DD hh:mm:ss'));//今天是2019/02/21 10:49:29

6、获取指定区间范围随机数,包括lowerValue和upperValue

function randomFrom(lowerValue,upperValue)
{
    return Math.floor(Math.random() * (upperValue - lowerValue + 1) + lowerValue);
}
//如获取1-100之间的随机数
console.log(randomFrom(1,100));
 

7、数组排序

 
1、快速排序
    
    /** 
     *   得到中间那位那位数,然后循环判断, arr[i] < 中间数 则push leftArr, 否则push rightArr, 最后返回 left数组 '拼接' 中间数 + right数组 
     */
    function sort(arr){
    
        if(arr.length <= 1){
            return arr;
        }
    
        var numIndex = Math.floor(arr.length/2);
        var numVal = arr.splice(numIndex,1);
        var leftArr = [];
        var rightArr = [];
    
        for(var i=0; i<arr.length; i++){
    
            if(arr[i]<numVal){  
                leftArr.push(arr[i]);
            }else{
                rightArr.push(arr[i])
            }
    
        }
    
        return sort(leftArr).concat(numVal,sort(rightArr));
 
    }
 
2、sort排序
    var num=[7,45,100,4,2,564];
    num.sort(function (a, b){
        return a - b;
    });
    console.log(num)  //[2, 4, 7, 45, 100, 564]

8、数组去重

1、indexOf 去重
 
/**
 *   当arr的第一次出现的位置 == i  则是第一次出现就push到tempArr
 */
function unique(arr){
 
    if (arr.length <= 1){
        return arr;
    }
 
    var tempArr = [];
 
    for(var i=0; i<arr.length; i++){
 
        if(tempArr.indexOf(parseInt(arr[i])) == -1){        //-1 证明没有出现过
 
            tempArr.push(arr[i]);
 
        }
 
    }
 
    return tempArr;
 
}
 
2、Set去重
function SetUnique(array) {
  return [...new Set(array)];
}
dedupe([1, 1, 2, 3]) // [1, 2, 3]

--------------------------------------------------拿走 不要赞------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值