記錄看到或者用到的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;
}
}