超實用迷你js判斷類庫介紹

這個類庫是幹嗎的?

平時項目的開發不免遇到大量的邏輯判斷,因而我將一些經常使用的判斷封裝成了一個js類庫,judge.js是我用業餘時間寫的一個js判斷類庫,能夠用來判斷數據類型(isFunction,isObject,isJson,isArray等),判斷瀏覽器內核,判斷移動和PC端瀏覽器名稱,判斷用戶設備類型(安卓設備,iOS設備等),判斷安卓IOS系統版本和作一些存在性信息校驗(郵箱,郵編,電話,手機等等),還能夠用於斷言。他的特色有:linux

  • 沒有任何依賴
  • 支持 AMD & CommonJS
  • 輕量級(10kb)

judge.js一個用來作判斷的js類庫

  • 沒有任何依賴
  • 支持 AMD & CommonJS
  • 輕量級(10kb)
$ npm install  
$ gulp compress
DEMO: http://hawx1993.github.io/jud...

開始

使用 npm安裝 judgejs
$ npm install judgejs
使用 bower 安裝 judgejs
$ bower install judgejs

目錄

使用方法

var judge = require('judgejs');

judge.version

=>0.7.0

能夠用$來代替judge。例如:android

require('../judge.js')

$.version;
=> 0.7.0

API

數據類型判斷

judge.isArray(value)
judge.isArray(['foo','bar',{'name':'trigkit4'}])

=> true
judge.isInt(num)
var num = 3.14;
judge.isInt(num);

=>false
judge.isError(value)

判斷給定值是不是Errorios

judge.isJson(json)

判斷給定值是不是json格式git

var str = '{"name":"jack"}';
 judge.isJson(str);//false
 var json = JSON.parse(str);
 judge.isJson(json);//true
judge.isFunction()

判斷給定值是不是函數:github

var fn = new Function ();
judge.isFunction(fn);

=>true
judge.isString()

判斷一個給定的值是不是字符串,返回布爾值web

judge.isObject()

判斷一個給定的值是不是對象,返回布爾值;其中:
array,object,number,string,null,function,boolean被視爲對象,空字符串和undefined爲非對象。chrome

var obj = Object.create(null);
judge.isObject(obj);//true

judge.isObject(undefined);//false
judge.isObjectLike(value)

判斷參數value是不是object-likenpm

judge.isObjectLike([NaN]);

=>true

judge.isObjectLike(null);

=>false
judge.type()

判斷值的類型,包括:json

array,object,number,string,null,undefined,function,booleangulp

var arr = new Array;
judge.type(arr);//array

var obj = {};
judge.type(obj);//object

var num = Number(1);
judge.type(num);//number

var str = '123';
judge.type(str);//string

var n = null;
judge.type(n);//null


var u = undefined;
judge.type(u);//undefined

var fn = function () {};
judge.type(fn);//function

var bool = Boolean();
judge.type(bool);//boolean

var proto = Object.prototype;
judge.type(proto);//object

function Person(){}
var p1 = new Person();
judge.type(p1);//object
judge.isEqual()

判斷兩個給定值是不是嚴格相等:

var judge = require('judgejs');
var str = Boolean(true);
var str2 = !!true;
var str3 = true;

var obj1 = {};
var obj2 = new Object();
var obj4 = Object.create(null);

var foo = {name:'trigkit4'};
var bar = {age:23};
var baz = Object.assign(foo,bar);
var obj3 = {
    name: 'trigkit4',
    age: 23
};
 
judge.isEqual(str,str2,str3);//true
judge.isEqual(obj1,obj2,obj4);//false
judge.isEqual(str,str2,str3);//true
judge.isEqual(baz,obj3);//false,refer address different
judge.isChar()

判斷給定值是不是字符

judge.isRegExp(reg)

判斷給定值是不是RegExp對象:

var reg = /^(a,z)/i;
judge.isRegExp(reg);

=> true

judge.isRegExp('/[a-z]/');

=>false
judge.isLength(value)

判斷value是不是有效的類數組長度

judge.isLength(Infinity);

=>false

var arr = Number([]);
judge.isLength(arr);

>true
judge.isWindow(obj)

判斷是不是window對象。

judge.isDocument()

判斷是不是Document對象

judge.isPlainObject(obj)

判斷obj是不是純粹的對象,純粹的對象是經過{}建立或者經過new Object()建立

judge.isPlainObject(window);

=>false

var arr = Number([]);
judge.isPlainObject(arr);

=>false

judge.isPlainObject(new Date());

=>false

judge.isPlainObject({});//true
judge.isArrayLike(obj)

判斷obj是不是類數組對象(類數組對象被限定爲擁有非負整數屬性的對象,NodeList,arguments,Array等):

judge.isArrayLike(document.body.children);

=>true

var obj = [{name:'null'}];
judge.isArrayLike(obj);

=>true

judge.isArrayLike(null);

=>false
judge.isArrayLikeObject(value)

judge.isArrayLike相似,但isArrayLikeObject會檢測value是不是對象

judge.isArrayLikeObject('abcd');//false
judge.isArrayLikeObject(document.body.children);//true
judge.isArguments(value)

判斷參數value是不是一個arguments對象:

judge.isArguments(function(){ return arguments;}())

=>true
judge.isSet(value)

判斷給定值是否不爲nullundefined

judge.idNumber(id)

判斷你的身份證號碼是否符合規範,其中X不區分大小寫:

var id = '35050019970323505x';
judge.idNumber(id);

=> true
judge.isOdd(num)

判斷給定值是不是奇數,返回布爾值

judge.min(a,b)

判斷給定的數值中誰是最小值,並返回最小值

judge.min(0,-1);
=>-1
judge.isEven(num)

判斷一個給定的值是不是偶數,返回布爾值

$.isEven(null);

=>false
judge.isNull(value)
judge.isNull(void 0);

=>true

judge.isNull(null);

=>true
judge.isUndefined(value)
judge.isUndefined(null);

=>false

judge.isUndefined(void 0);

=>true
judge.isNumber(num)
judge.isNumber(Infinity);

=>true

平臺判斷

judge.kernel()

用於檢測當前瀏覽器的內核(排版引擎),能夠檢測的類型以下:

webkit,gecko,trident,edge,opera
瀏覽器的內核分別用於檢測Chrome瀏覽器,Firefox瀏覽器,IE瀏覽器,Edge瀏覽器和Opera瀏覽器

if(judge.kernel() == 'webkit'){...} //引號處不能出現空格等不規範寫法
judge.platform()

檢測用戶當前設備,能夠檢測的類型以下:

android,iPad,ios,windowsPhone,mac,windows,linux,blackBerryandroidTablet

if(judge.platform() == "androidTablet"){...}

參數也如上所示,千萬不能寫錯,否則檢測就會出現錯誤。參數採用駝峯命名法

judge.browser()

檢測當前瀏覽器類型,能夠檢測的類型以下:

"IE6","IE7","IE8", "IE9", "IE10", "IE11","firefox","edge","sougou","liebao","liebao mobile","weixin","uc","mobile uc","baidu browser","mobile baidu","mobile qqbrowser","qqbrowser","opera","miui browser","oppo browser","mobile safari","android chrome", "ios chrome","chrome", "safari","ios safari","Mbile IE各個版本"

如需匹配不一樣平臺的瀏覽器,需用judge.platform()再作一次匹配,使用場景能夠是:

1.若是沒有傳入參數,則返回瀏覽器的名稱,如:

judge.browser();//你的瀏覽器是Chrome的話

=>Chrome

2.傳入參數的狀況下,返回布爾值,如:

judge.browser("isChrome");

=>true
參數以下所示,採用駝峯命名法:
"isFirefox","isIosChrome","isIpadSafari", "isEdge", "isSougou","isLiebao",
"isLiebaoMobile","isWeiXin","isUC", "isUCMobile", "isBaidu",
"isBaiduMobile", "isQQMobile","isQQBrowser", "isOpera", "isMiuiBrowser",
"isOppoBrowser","isAndroidChrome","isChrome","isIosSafari","isSafari"

其中UC瀏覽器採用固定大寫的寫法。因爲有的移動端瀏覽器採用和瀏覽器不一樣的ua,因此不能共用(沒法單純加一個`judge.isMobile()` or `judge.platform()=='android'`)。

//IE
"isIE","isMobileIE+數字(如:isMobileIE10)","isIE+數字(6~11),如isIE10"

//for example
judge.browser("isIE11");//true,若是你的瀏覽器是IE11的話
judge.iosVersion()

判斷iOS 系統版本號,返回數字形式的版本號:

judge.iosVersion();

=>9.0.2
judge.androidVersion()

同上

judge.isChromium()

判斷用戶的瀏覽器是不是套着chrome內核的瀏覽器,返回布爾值

設備判斷

judge.isMobile()

判斷用戶設備是不是移動設備(ipad,iphone,ipod,android)

judge.isPc()

判斷用戶設備是不是PC

judge.iosDevice()

檢測iPhone手機設備類型,能夠檢測以下類型的iPhone手機:

iphone4(s) ,iphone5(s), iphone6(s),iphone6(s)Plus

if(judge.iosDevice=='iphone6Plus'){...}

參數爲:iphone4,iphone5,iphone6,iphone6Plus

$.iosDevice();//if your ios device is iphone6

=>iphone6
judge.androidDevice()

檢測安卓設備,如今只支持:mi4,魅族metal(mz-metal),魅族mx5,魅族mx3

TODO:準備支持更多安卓手機設備

judge.isTouchDevice()

判斷用戶當前設備是不是觸屏設備,返回布爾值Boolean

存在性和信息校驗

judge.isExist(value)
var str =  null;
judge.isExist(str)
=>false

var str = '';
judge.isExist(str)
=>false
judge.lt(val1,val2)

判斷val1是否小於val2:

judge.lt(1,-2);

=>false
judge.inArray(val,arr)

判斷參數val是否存在arr數組內:

var val = [{'name':'huang'},123],
    arr = [val,456];
judge.inArray(val,arr);

=>true
judge.email(em)

判斷是否符合Email規範:

var email = 'hwx.trigkit4@163.com';
judge.email(email);

=>true

var email2 = 'hwx.trigkit.@gmail.com';
judge.email(email2);
=>false
judge.hasLowerCase()

判斷是否含有小寫字母:

var str ='trigkit4';
judge.hasLowerCase(str);
judge.hasNumber()

判斷給定值是否含有數字:

var num ='trigkit4';
judge.hasNumber(num);

=>true
judge.hasCaptial()

判斷是否含有大寫字母:

var str ='trigkit4';
judge.hasCapital(str);
judge.isBrowser()

判斷當前客戶端是不是瀏覽器,返回布爾值

judge.size(val)

判斷給定值的大小,返回數值:

var val = '琅琊榜lyb';
judge.size(val);

=>6
judge.isHttps()

判斷當前站點是不是HTTPS,返回布爾值

judge.isUnique()

判斷一個給定數組的元素的值是否惟一:

var a = [1,2];
var arr = [1,2,3,4,a];//[1,2,3,4,[1,2]];
judge.isUnique(arr);//true

var arary = ['1',1];
judge.isUnique(array);//true
judge.hasClass()

判斷給定值是否有class

judge.qqNumber()

判斷給定值是否符合QQ號規範,返回布爾值:

var qq = 345812345;
judge.qqNumber(qq);

=>true
judge.phoneNumber

判斷給定值是否符合手機號規範:

var num = 17755503789;
judge.phoneNumber(num);

=>true
judge.telPhone(num)

判斷電話號碼是否符合規範

judge.includeChinese

判斷給定值是否含有中文字符:

var ch = 'js腳本';
judge.includeChinese(ch);

=> true
judge.onlyChinese(ch)

判斷給定字符是否僅有中文字符:

var ch = 'zh中國';
judge.onlyChinese(ch);

=>false
judge.onlyNumber()

判斷給定值是否只含有數字:

var s = '233';
judge.onlyNumber(s);

=>true
judge.isElement(element)

判斷給定元素是不是DOM元素,返回布爾值

var div = document.createElement('div');
judge.isElement(div);

=>true
judge.assert(value,desc)

你可使用judge.assert 去斷言你想要斷言的值,若是該值經過斷言,描述不符將變爲綠色,不然變爲紅色;

function add(a,b){
    return a + b;
}
var a = 1,b=2;

judge.assert(add(1,2) === 3,'true');
judge.assert(add(2,3) === 6,'false');

在參數desc 部分去填寫你的測試描述

judge.hasHash(url)

判斷一個給定的url是否有哈希值

var url = 'www.baidu.com#w';
judge.hasHash(url);

=> true
judge.has(obj,key)

判斷obj是否有包含給定的鍵(key)

var obj ={
    name:'trigkit4'
};
judge.has(obj,'name');

=>true
judge.isUrl(url)

判斷一個給定的值是不是URL

var url = 'www.jd.d';
judge.isUrl(url);

=>false
judge.zipCode(code)

判斷給定值是否符合郵編規範:

var zipcode = 362014;
judge.zipCode(zipcode);

=>true
judge.include(str,substr)
var str =  'microsoft';
var substr = 'soft';
judge.include(str,substr);

=>true
judge.isOnline()

可用於判斷設備是否聯網,判斷斷網可用judge.isOnline==false,返回true,即斷網

judge.hasSpecialChar()

判斷是否含有特殊字符,除了大小寫字母、數字和漢字之外的字符都被視爲特殊字符

var char = 'a!@#$%';
judge.hasSpecialChar(char);

=>true
judge.isEmpty()

判斷給定值是否爲空,nullundefined被視爲空,
數字0被視爲非空

var arr = [];//judge.isEmpty(arr); => true
var n = null;//judge.isEmpty(n); => true
var u = undefined;//judge.isEmpty(u); => true
var num = 0;//judge.isEmpty(num); => false
var obj = Object.create(null);//judge.isEmpty(obj); => true
var str = '';//judge.isEmpty(str); => true
judge.position(element,parent)

判斷DOM元素位置,若只傳入element參數,則返回其距離瀏覽器窗口的位置;
若傳入parent參數,則返回其距離父元素的位置。兼容IE瀏覽器

@{param}:parent 可選

judge.position(element).top ;//判斷元素距離頂部位置
judge.position(element,parent).left;//判斷元素距離父元素左邊的位置
judge.isNativeFn(fn)

判斷fn是不是原生方法,不能有括號

judge.isNativeFn(Object.assign);

=>true


var fn = new Function();
judge.isNativeFn(fn);

=>false


judge.isNativeFn(Array.prototype.filter)

=>true

var obj = {
        fn: function () {}
 };
 
judge.isNativeFn(obj.fn)

=>false
judge.isIE8Plus(boolean)

判斷當前瀏覽器是不是IE8+ (包含IE8),直接返回布爾值

參數以下:

  • true:包含IE8
judge.isIE8Plus(true);//include IE8
  • false:不包含IE8
judge.isIE8Plus(false);//exclude IE8

沒有參數,默認包含IE8

judge.strLength(str)

判斷字符長度,返回數字。一箇中文字符被視爲2,一個英文字符爲視爲1:

judge.strLength('你好China');//9
judge.isLeapYear(year)

判斷是不是閏年

相關文章
相關標籤/搜索