Happy New Year!

自己封装的方法库 持续更新中

/**
 * 2019年8月10日 13:42:50
 * @小义 xiaoyi
 * 封装全局 公用方法 组件
 * 
 */



 /**
  * 方法一
  * 处理10位时间戳 返回格式 2019-08月10日13:55:34
  * 
  */
const timestampToTime = (timestamp)=> {
    var date = new Date(timestamp * 1000); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
    var Y = date.getFullYear() + '-';
    var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
    var D = change(date.getDate()) + '';
    return Y + M + D ;
    // var h = change(date.getHours()) + ':';
    // var m = change(date.getMinutes()) + ':';
    // var s = change(date.getSeconds());
    // return Y + M + D + h + m + s;
    //return  M + D + h + m + s;
}


const timestampToTimeyear = (timestamp)=> {
    var date = new Date(timestamp * 1000); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
    var Y = date.getFullYear() + '-';
    var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1);
    // var D = change(date.getDate()) + '';
    return Y + M ;
}

const timestampToTimetwo = (timestamp)=> {
    var date = new Date(timestamp * 1000); //时间戳为10位需*1000,时间戳为13位的话不需乘1000
    var Y = date.getFullYear() + '-';
    var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
    var D = change(date.getDate()) + '-';
    var h = change(date.getHours()) + ':';
    var m = change(date.getMinutes()) + ':';
    var s = change(date.getSeconds());
    return Y + M + D + h + m + s;
    //return  M + D + h + m + s;
}

function change(t) {//修改时间
    if (t < 10) {
        return "0" + t;
    } else {
        return t;
    }
}


/**
 * 方法二
 * 获取url上面的指定参数 传入参数名称就可以了
 * 
 *  */
const getUrlParam = (name)=> {   //name为要获取的参数名
    var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
    var rrr = decodeURIComponent(window.location.search);
    var r = rrr.substr(1).match(reg);
    if(r != null) return unescape(r[2]);
    return null;  
}


/**
 * 方法三
 * 获取url上面的所有参数的方法 返回的是一个对象
 * 
 * 
 */

 const geeurlcodeObj = ()=>{//获取url上面的所有参数 返回一个 对象

    try{
        //将url 上的参数全部获取成一个对象
        //var urlcan = '?area_id=2 3&code=021t5Hf8218EdK0hFUe8264Af82t5Hf-&st ate=&a=1 1&b=2 2&c=3 3 3&d=44 4 ';
        var urlcan = decodeURIComponent(window.location.search);;
        urlcan = urlcan.split("?")[1];//数组
        urlcan = urlcan .replace(/\s/g,"");
        //去空格
        var arr = urlcan.split("&");//数组
        var obj = {};

        for(var i=0;i<arr.length;i++){
            var arritem = arr[i].split("=");
            if(arritem[1]){
                obj[arritem[0]] = arritem[1];
            }else{
                obj[arritem[0]] = "";
            }
        }
        
        return obj;
    }catch(e){
        return {};//错误后返回空对象
    }
}



/**
 * 方法四
 * 字符串去除所有空格 去除首尾中间的空格
 */
const rmspace = (str)=>{
    if(str){
        return str.replace(/\s/g,"");
    }else{
        return "";
    }
}

/**
 * 方法五
 * 处理富文本
 * 使用场景是 编辑器使用的是 /ssss
 * 富文本没有存入域名 然后要在小程序 或者分布式场景下查看 
 * 那么必须用正则去替换 大概的代码如下
 * 只需要传入 富文本和 对应的资源域名就可以了
 */

const changefwb =  (strin,baseStatic)=>{//懒加载处理 将src 换成 v-lazy=
    let newStr= strin.replace(new RegExp(/src=\"/g), `mode="widthFix" src="${baseStatic}`);//v-lazy=

    return newStr;
}



/***
 * 方法六
 * JS截取指定长度的的字符串(含中文),中文自动按2个字符截取,多出部分用...代替
 * 
 * 参数1 字符串
 * 参数2 截取的长度
 * 
 */
 const setString = (str, len)=> {  
    var strlen = 0;  
    var s = "";  
    for (var i = 0; i < str.length; i++) {  
        if (str.charCodeAt(i) > 128) {  
            strlen += 2;  
        } else {  
            strlen++;  
        }  
        s += str.charAt(i);  
        if (strlen >= len) {  
            return s+"...";  
        }  
    }  
    return s;  
}  


/**
 * 方法七
 * 
 * js 对象合并 主要是用的es6的方法
 * 
 */
const codeobj = (obj1,obj2)=>{

    let form = obj1;
    let obj = obj2;
    
    Object.assign(form, obj);

    return form;

}


/***
 * 方法八
 * 
 * js 判断当前浏览器 是不是 微信浏览器 如果是返回 true
 * 
 */


const isWeiXin = ()=>{
    var ua = window.navigator.userAgent.toLowerCase();
    if(ua.match(/MicroMessenger/i) == 'micromessenger'){
        return true;
    }else{
        return false;
    }
}

/**
 * 方法九
 * js 截取某个字符串前面的内容:
 * 
 * 往左边截取
 * 
 * https://www.cnblogs.com/shaozhu520/p/10472027.html
 */
const jiequletft = (varstr,gzj)=>{
    let tr = varstr.match('/(\S*)'+gzj+'/')[1];
    return tr;
}



/**
 * 方法十
 * 
 * 获取当前时间戳
 */
//从1970年开始的毫秒数然后截取10位变成 从1970年开始的秒数
const newdate = ()=> {
    var tmp = Date.parse( new Date() ).toString();
    tmp = tmp.substr(0,10);
    return tmp;
}




/**
 * 方法十一
 * 
 * 删除数组中指定元素 传数组和指定的值就可以了
 * @param arr
 * @param val
 */
const removeByValue =  (arr, val)=> {

    for (var i = 0; i < arr.length; i++) {
      if (arr[i] == val) {
        arr.splice(i, 1)
        break
      }
    }

    return arr;

}



/**
 * 方法十二
 * 
 * 将小数字符串精确到指定位数
 * @param num string 字符串类型的小数
 * @param index int 精确到小数点第几位
 */
const roundFloat =  (num, index)=> {
    return Number(num).toFixed(index)
}



/**
 * 方法十三
 * 数组去重
 * @param {Array} arr 
 * @returns {Array}
 * 
 * 弃用 直接用set 就可以
 */

const arrayUnique = (arr)=> {
    var newArr = []
    for (var i = 0, len = arr.length; i < len; i++) {
      for (var j = i + 1; j < len; j++) {
        if (arr[i] === arr[j]) {
          //获取没重复的最右一值放入新数组
          ++i
        }
      }
      newArr.push(arr[i])
    }
    return newArr
}


/**
 * 方法十四
 * 验证身份证号
 * @param el 号码输入input
 * @returns {boolean}
 */

const checkCardNo = (el)=> {
    var txtval = el;
    var reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;
    return reg.test(txtval)
  }
 


const getTimeOut = ()=> {
}


/**
 * 方法十五
 * 生成随机字符串(可指定长度)
 * @param len
 * @returns {string}
 */
const randomString = (len)=> {
    len = len || 8;
    var $chars = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678';
    /****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1****/
    var maxPos = $chars.length;
    var pwd = '';
    for (var i = 0; i < len; i++) {
      pwd += $chars.charAt(Math.floor(Math.random() * maxPos));
    }
    return pwd;
}


/**
 * 方法十六
 * 生成随机颜色
 * 
 */
const getRandomColor  = ()=> {
    const rgb = []
    for (let i = 0 ; i < 3; ++i){
      let color = Math.floor(Math.random() * 256).toString(16)
      color = color.length == 1 ? '0' + color : color
      rgb.push(color)
    }
    return '#' + rgb.join('')
}

/**
 * 方法十七
 * 
 * 检测密码强度
 * @param str //检测的密码
 * @returns {Number} 密码强度
 */
const checkPwd =   (str)=> {
    var nowLv = 0;    
    if (str.length < 6) {
        return nowLv
    }

    if (/[0-9]/.test(str)) {
        nowLv++
    }    

    if (/[a-z]/.test(str)) {
        nowLv++
    }

    if (/[A-Z]/.test(str)) {
        nowLv++
    }

    if (/[\.|-|_]/.test(str)) {
        nowLv++
    }    
    
    return nowLv;
}

 

const checkPhone = (phone)=>{ 
    if(!(/^1[3456789]\d{9}$/.test(phone))){ 
        //alert("手机号码有误,请重填");  
        return false; 
    }else{
        return true; 
    }
}

//检测银行卡的方法
const chidecard = (data)=>{
    var regExp = /^([1-9]{1})(\d{15}|\d{18})$/; 
    return regExp.test(data) 
}


//验证金额 输入是否正确
const Verificationamount= (data)=>{
    let reg = /(^[1-9](\d+)?(\.\d{1,2})?$)|(^[1-9]$)|(^\d\.[1-9]{1,2}$)|(^\d\.[0]{1}[1-9]{1}$|(^\d\.[1-9]{1}[0]{1}$)$)/;
    let num = data;
    if (reg.exec(num)) {
        return true;
    } else {
        return false;
    }
}

//取当前是星期几

const daytoday= (data)=>{
    let now = new Date();
    let day = now.getDay();
    let weeks = new Array("星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六");
    let week = weeks[day];
    return week;
}


// 解析链接中的参数
const getQueryString =  (url, name)=> {
    var reg = new RegExp('(^|&|/?)' + name + '=([^&|/?]*)(&|/?|$)', 'i')
    var r = url.substr(1).match(reg)
    if (r != null) {
      return r[2]
    }
    return null;
  };

  //获取当前的年月日
  const getstrdata = ()=>{
    let tempDate = new Date();
    let YY = tempDate.getFullYear();//年
    let mm = tempDate.getMonth() + 1;//月
    mm < 10 ? mm = "0" + mm : mm = mm;//月
    let dd = tempDate.getDate();//日
    dd < 10 ? dd = "0" + dd : dd = dd;//月
    return `${YY}-${mm}-${dd}`
  }

  //获取近12月日期
    const getyearlist = ()=>{
        var dataArr = [];
        var data=new Date();
        var year=data.getFullYear();
        data.setMonth(data.getMonth()+1)//获取到当前月份,设置月份
        for (var i = 0; i < 12; i++) {
            data.setMonth(data.getMonth()-1);//每次循环一次 月份值减1
            dataArr.push(data.getFullYear()+"-"+(data.getMonth()+1))
        }
        return dataArr.reverse();
    };

    //获取当前时间的未来7天
    const getdaylist = ()=>{
        var dd=new Date();
        var arr=[];
        for(var i=0;i<7;i++){
            dd.setDate(dd.getDate()+1);
            arr.push((dd.getMonth()+1)+"-"+dd.getDate())
        }
        return arr
    };

    //隐藏字符串中的一部分 可自定义
    const plusXing = (str,frontLen,endLen)=> {
        var len = str.length-frontLen-endLen;
        var xing = '';
        for (var i=0;i<len;i++) {
        xing+='*';
        }
        return str.substring(0,frontLen)+xing+str.substring(str.length-endLen);
    }

export { 
    getTimeOut,
    timestampToTime,//10位时间戳 转年月日时分秒
    timestampToTimetwo,
    timestampToTimeyear,//年月
    getUrlParam,//获取url上的指定参数
    geeurlcodeObj,//获取url上面的参数 返回对象
    rmspace,//字符串去除所有空格 去除首尾中间的空格
    changefwb,//处理富文本
    setString,//字符串截取指定长度 然后...
    codeobj,//对象合并
    isWeiXin,//判断当前浏览器是不是微信浏览器 返回布尔值
    jiequletft,//截取字符串 往左边截取
    newdate,//获取当前时间戳
    removeByValue,//删除数组中指定的值 指定的元素
    roundFloat,//将小数精确到指定位数
    arrayUnique,//数组去重
    checkCardNo,//验证身份证方法 返回布尔值
    randomString,//生成随机字符串 可以指定长度
    getRandomColor,//生成随机颜色
    checkPwd,//检测密码强度
    checkPhone,//检测手机号码
    chidecard,//检测银行卡
    Verificationamount,//验证金额
    daytoday,//返回星期几
    getQueryString,//// 解析链接中的参数
    getstrdata,//获取字符串时间格式
    getyearlist,//获取近期的12个月
    getdaylist,//获取近期的7天
    plusXing,//隐藏字符串中的一部分
 }


 /***
  * 
  * 使用方法 {} 按需引入 需要上面哪个方法引入哪个方法
  * 
  * //引入
  * import {timestampToTime,checkPwd} from "@/utils/ytool"
  * 
  * //调用
  * timestampToTime()
  * checkPwd()
  * 
  * 
  */

  

posted @ 2020-10-13 09:42  义美-小义  阅读(176)  评论(0编辑  收藏  举报
返回顶部小火箭
世界很公平,想要最好,就一定得付出!
x
github主页