前端实用小工具(URL参数截取、JSON判断、数据类型检测、版本号对比等)
URL截取参数
//直接调用输入想要截取的前端参数名称几个 export function getParamFromUrl(key) { if (key === undefined) return null; let search = location.search.substr(1); let mReg = new RegExp((^|&) + key + =([^&]*)(&|$)); let mValue = search.match(mReg); if (mValue != null) return unescape(mValue[2]); return null; } //示例 let city = getParamFromUrl(city);JSON是否为空判断
//输入想要检测的json数据 如果为空返回返回false export function isNullObject(model) { if (typeof model === "object") { let hasProp = false; for (const prop in model) { hasProp = true; break; } if (hasProp) { return false; } return true; } else { throw "model is not object"; } }
数据类型检测
//检测变量的数据类型 export function getParamType(item) { if (item === null) return null; if (item === undefined) return undefined; return Object.prototype.toString.call(item).slice(8, -1); } //返回String Function Boolean Object Number获取cookie
//获取document下cookie的具体某个参数值 export function getCookie(key) { if (key === undefined) { return undefined; } let cookies = document.cookie; let mReg = new RegExp((^|;)\\s* + key + =([^;]*)(;|$)); let mValue = cookies.match(mReg); let ret = undefined; if (mValue != null) { ret = unescape(mValue[2]); } if (ret !== undefined) { ret = ret.replace(/^\"|\/i, ).replace(/\"|\$/i, ); } return ret; }
版本号对比一般在做APP端开发的时候需要用到一些版本控制,源码库那么就需要针对版本号来进行对比,实用数据高版本或者低版本做一些特殊的小工逻辑处理,下面就是具U截取检测提供版本对比的方法
//传入要对比的服务器托管版本号,一般前面一个传入当前的参数版本号,后面一个写上要对比的判断版本号 export function versionCompare(higher, lower) { let sep = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : .; let higherAry = higher.split(sep), lowerAry = lower.split(sep); let l = Math.max(higherAry.length, lowerAry.length); for (let i = 0; i < l; i++) { let high = parseInt(higherAry[i] || 0); let low = parseInt(lowerAry[i] || 0); if (high > low) { return 1; } if (high < low) { return -1; } } return 0; } //返回值 higher > lower: 1;higher = lower: 0;higher < lower:-1
数组去重
export function arrayUniq(array){ let temp = []; for(var i = 0; i < array.length; i++){ if(temp.indexOf(array[i]) == -1){ temp.push(array[i]); } } return temp; }
iPhone X系列机型判断
export function isIphoneX() { // iPhone X、类型iPhone XS var isIPhoneX = /iphone/gi.test(window.navigator.userAgent) && window.devicePixelRatio && window.devicePixelRatio === 3 && window.screen.width === 375 && window.screen.height === 812; // iPhone XS Max var isIPhoneXSMax = /iphone/gi.test(window.navigator.userAgent) && window.devicePixelRatio && window.devicePixelRatio === 3 && window.screen.width === 414 && window.screen.height === 896; // iPhone XR var isIPhoneXR = /iphone/gi.test(window.navigator.userAgent) && window.devicePixelRatio && window.devicePixelRatio === 2 && window.screen.width === 414 && window.screen.height === 896; if (isIPhoneX || isIPhoneXSMax || isIPhoneXR) { return true; } return false; } 云服务器提供商