js随记

26 阅读1分钟

提取url参数

const getParams = (url) => {
                let obj = {};
                 if(url.indexOf('?') == -1) return obj;
                url.replace(/([^?&=]+)=([^?&=#]*)/g, (val, $1, $2) => {
                    var key = decodeURIComponent($1);
                    var value = decodeURIComponent($2);
                    obj[key] = value;
                    return val;
                })
                return obj;
            }
getParams('https://nowcoder.com/online?id=1&salas=1000')

数组扁平化

const flatten = arr => {
                return arr.toString().split(',').map(item => Number(item));
            }

判断质数

Number.prototype._isPrime = function(number) {
                if(number < 2) {
                    return true;
                }
                for(var i = 2;i<Math.sqrt(number);i++) {
                    if(number % i === 0) {
                        return false;
                    }
                }
                return true;
            }

时间格式化

//oDate时间戳
function formatDate(oDate, sFormation) {
    var add0 = function(num){
        if(num<10)
            return 0+""+num;
        else
            return num;
 
    }
    var o = {
        "yyyy":oDate.getFullYear(),
        "yy":oDate.getFullYear()%100,
        "MM":add0(oDate.getMonth()+1),
        "M":oDate.getMonth()+1,
        "dd":add0(oDate.getDate()),
        "d":oDate.getDate(),
        "HH":add0(oDate.getHours()),
        "H":oDate.getHours(),
        "hh":add0(oDate.getHours()%12),
        "h":oDate.getHours()%12,
        "mm":add0(oDate.getMinutes()),
        "m":oDate.getMinutes(),
        "ss":add0(oDate.getSeconds()),
        "s":oDate.getSeconds(),
        "w":function(){
            var day = ["日","一","二","三","四","五","六"];
            return day[oDate.getDay()];
        }(),
    }
    for(var k in o){
        sFormation = sFormation.replace(k,o[k]);
    }
    return sFormation;
}

邮箱正则

function isAvailableEmail(sEmail) {
    var pattern = /^[\da-z]+[\w\.-]?[\da-z]+@[a-z\d]+[\w\.-]?[a-z\d]+\.[a-z\d]{2,}$/i;
    return pattern.test(sEmail);
}

乘法 小数

    function multiply (a, b) {
      var f1 = 1, f2 = 1;
// 如果存在小树点则乘以他的0的个数f1,f2分别存储a,b的倍数最后先算a*b扩大的在除以抵消掉
      if (String(a).indexOf(".") != -1) {
        f1 = String(a).length - String(a).indexOf(".") + 1
        f1 = Math.pow(10, f1)
        a = a * f1
      }
      if (String(b).indexOf(".") != -1) {
        f2 = String(b).length - (String(b).indexOf(".") + 1)
        f2 = Math.pow(10, f2)
        b = b * f2
      }
      return a * b / f1 / f2
    }

颜色值rgb转换16

function rgb2hex(sRGB) {
    var regexp=/rgb\((\d+),\s*(\d+),\s*(\d+)\)/;
    var ret=sRGB.match(regexp);
    if(!ret){
        return sRGB;
    }else{
        var str='#';
        for(var i=1;i<=3;i++){
            var m=parseInt(ret[i]);
            if(m<=255&&m>=0){
                str+=(m<16?'0'+m.toString(16):m.toString(16));
            }else{
                return sRGB;
            }
        }
        return str;
    }
}