常用,好用的js程式碼

=.=發表於2018-12-08

記錄看到或者用到的js程式碼,長期更新!

判斷是否是正整數

(number-0)|0 !== number-0

解析: number-0 轉換成數字,再通過位移運算(|)判斷是否跟原數字相等

安全檢查javascript的型別


function typeOf(o){
    let _toString = Object.prototype.toString;
    //列舉基本的資料型別和內建的物件型別
    let _types = {
        "undefined" : "undefined",
        "number" : "number",
        "string" : "string",
        "boolean" : "boolean",
        "[object Function]" : "function",
        "[object Array]" : "array",
        "[object Date]" : "date",
        "[object RegExp]" : "regExp",
        "[object Error]" : "error"
    }
    
    return _types[typeof o] || _types[_toString.call(o)] || (o? "object":"null");
    
}

ps: 上述方法適用於基本的資料型別和內建物件,而對於自定義物件是無效的。

判斷一個值是否可用做數字

function isNumber(num){
    return typeof num === "number" && isFinite(num);
}

如果是有限數值,或者可以轉成有限數值,將返回true;如果只是NaN,正負無窮大的值,則返回false。

判斷是不是陣列


function isArray(arr){
    return Object.prototype.toString.call(arr) === `[object Array]`
}

判斷是不是ios系統

function isIOS(){
    let u = navigator.userAgent;
    let isIOS = !!u.match(/(i[^;]+;( U;)? CPU.+Mac OS X/); //ios終端
    return isIOS;
}

轉成字串

function toString (val) {
  return val == null
    ? ``
    : typeof val === `object`
      ? JSON.stringify(val, null, 2)
      : String(val)
}

中劃線轉駝峰


function camelize(str){
    return str.replace(/-(w)/g, function (_, c) { return c ? c.toUpperCase() : ``; })
}

駝峰轉中劃線


function camelize(str){
    return str.replace(/B([A-Z])/g, `-$1`).toLowerCase();
}

首字母大寫


function capitalize(str){
    return str.charAt(0).toUpperCase() + str.slice(1);
}

獲取url的query,返回指定key的值

function getUrlQuery(url,key){
    let querys = url.split(`?`);
    if(querys.length<=1){
        return false;
    }
    let reg = /&?([^=]+)=([^&#]+)/g;
    let obj = {};
    querys.forEach((query,i)=>{
        query.replace(reg,function(re,$1,$2){
            obj[$1]=$2;
        });
    })
    
    if(obj[key]){
        return obj[key];
    }else if(!key){
        return obj;
    }else{
        return false;
    }
}

相關文章