JS 数据类型(type)判断总结

Posted 在奋斗的大道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS 数据类型(type)判断总结相关的知识,希望对你有一定的参考价值。

1、判断是否为字符串(String)

 isString = o => Object.prototype.toString.call(o).slice(8, -1) === 'String',

2、判断是否为数字(Number)

isNumber = o => Object.prototype.toString.call(o).slice(8, -1) === 'Number', //是否数字

3、判断是否为对象(Object)

isObj = o => Object.prototype.toString.call(o).slice(8, -1) === 'Object', //是否对象

4、判断是否为数组(Array)

isArray = o => Object.prototype.toString.call(o).slice(8, -1) === 'Array', //是否数组

5、判断是否为时间格式(Date)

isDate = o => Object.prototype.toString.call(o).slice(8, -1) === 'Date', //是否时间

6、判断是否为布尔类型(Boolean)

isBoolean = o => Object.prototype.toString.call(o).slice(8, -1) === 'Boolean', //是否boolean

7、判断是否为函数(function)

isFunction = o => Object.prototype.toString.call(o).slice(8, -1) === 'Function', //是否函数

8、判断是否为null

isNull = o => Object.prototype.toString.call(o).slice(8, -1) === 'Null', //是否为null

9、判断是否为未定义(underfined)

isUndefined = o => Ojbect.prototype.toString.call(o).slice(8, -1) === 'Undefined', //是否为undefined

10、判断是否为ios

isIos = () => { //是否ios
    	var u = navigator.userAgent
    	if(u.indexOf('android') > -1 || u.indexOf('Linux') > -1) { //安卓手机
    		return false
    	} else if (u.indexOf('iPhone') > -1) { //苹果手机
    		return true
    	} else if(u.indexOf('iPad') > -1) { //iPad
    		return false
    	} else if(u.indexOf('Windows Phone') > -1) { //winPhone手机
    		return false
    	} else {
    		return false
    	}
    },

11、判断是否为PC

  isPc = () => { //是否为pc端
      var u = navigator.userAgent
      var agents = ["Android", 'iPhone', 'SymbianOs', 'Windows Phone', 'iPad', 'iPod']
      var flag = true

      for(let v = 0; v < agents.length; v++) {
      	if(u.indexOf(agents[v]) > 0) {
      		flag = false
      		break
      	}
      }
      return flag
    },

12、判断浏览器类型

   browserType = () => { //浏览器类型
    	var userAgent = navigator.userAgent,
    		  isOpera = userAgent.indexOf('Opera') > -1, //取得浏览器的userAgent字符串
    			isIE = userAgent.indexOf('compatible') > -1 && userAgent.indexOf('MSIE') > -1 && !isOpera,//判断是否ie浏览器
    			isEdge = userAgent.indexOf('Edge') > -1,//判断是否为IE的Edge浏览器
    			isFF = userAgent.indexOf('Firefox') > -1, //判断是否为Firefox浏览器
    			isSafari = userAgent.indexOf('Safari') > -1 && userAgent.indexOf("Chrome") == -1, //判断是否Safari浏览器
    			isChrome = userAgent.indexOf('Chrome') > -1 && userAgent.indexOf("Safari") > -1 //判断是否Chrome浏览
    	if(isIE) {
    		var reIE = new RegExp("MSIE (\\\\d+\\\\.\\\\d+);")
    		reIE.test(userAgent)
    		var fIEVersion = parseFloat(RegExp["$1"])
    		if(fIEVersion == 7) return "IE7" 
    		else if(fIEVersion == 8) return "IE8"
    		else if(fIEVersion == 9) return "IE9"
    		else if(fIEVersion == 10) return "IE10"
    		else if(fIEVersion == 11) return "IE11"
    		else return "IE7以下"
    	}

    	if(isFF) return "FF"
    	if(isOpera) return "Opera"
    	if(isEdge) return "Edge"
    	if(isSafari) return "Safari"
    	if(isChrome) return "Chrome" 
    },

13、通用正则表达式(手机号码、邮箱、QQ、密码等)

	checkStr = (str, type) => { //校验
  		switch(type) {
  			case 'phone': //手机号码
  				return /^1[3|4|5|7|8][0-9]{9}$/.test(str)
  				break
  			case 'tel': //座机
          return /^(0\\d{2,3}-\\d{7,8})(-\\d{1,4})?$/.test(str)
          break
        case 'card': //身份证
        	return /^\\d{15}|\\d{18}$/.test(str)
        	break
        case 'pwd': //密码以字母开头,只能包含字母、数字和下划线
        	return /^[a-zA-Z]\\w{5,17}$/.test(str)
        	break
        case 'postal': //邮政编码
          return /[1-9]\\d{5}(?!\\d)/.test(str)
          break
        case 'QQ': //QQ号
          return /^[1-9][0-9]{4,9}$/.test(str)
          break
        case 'email': //邮箱
        	return /^[\\w-]+(\\.[\\w-]+)*@[\\w-]+(\\.[\\w-]+)+$/.test(str)
          break
        case 'money': //金钱(小数点两位)
        	return /^\\d*(?:\\.\\d{0,2})?$/.test(str)
          break
        case 'URL': //网址
          return /(http|ftp|https):\\/\\/[\\w\\-_]+(\\.[\\w\\-_]+)+([\\w\\-\\.,@?^=%&:/~\\+#]*[\\w\\-\\@?^=%&/~\\+#])?/.test(str)
          break
        case 'IP': //IP
          return /((?:(?:25[0-5]|2[0-4]\\\\d|[01]?\\\\d?\\\\d)\\\\.){3}(?:25[0-5]|2[0-4]\\\\d|[01]?\\\\d?\\\\d))/.test(str)
          break
        case 'date': //日期时间
          return /^(\\d{4})\\-(\\d{2})\\-(\\d{2}) (\\d{2})(?:\\:\\d{2}|:(\\d{2}):(\\d{2}))$/.test(str) || /^(\\d{4})\\-(\\d{2})\\-(\\d{2})$/.test(str)
          break
        case 'number': //数字
          return /^[0-9]$/.test(str)
          break
        case 'english': //英文
          return /^[a-zA-Z]+$/.test(str)
          break
        case 'chinese': //中文
          return /^[\\u4E00-\\u9FA5]+$/.test(str)
          break
        case 'lower': //小写
          return /^[a-z]+$/.test(str)
          break
        case 'upper': //大写
          return /^[A-Z]+$/.test(str)
          break
        case 'html': //HTML标记
          return /<("[^"]*"|'[^']*'|[^'">])*>/.test(str)
          break
        default: 
          return true
  		}

以上是关于JS 数据类型(type)判断总结的主要内容,如果未能解决你的问题,请参考以下文章

JS的数据类型判断函数数组对象结构处理日期转换函数,浏览器类型判断函数合集

js中判断数据类型的四种方法总结

js判断数据类型

JS数据类型总结及比较

判断js中的数据类型的几种方法

判断js中的数据类型的几种方法