1、邮箱
export const isEmail = ( s) => {
return / ^ ( [ a- zA- Z0 - 9 _- ] ) + @( [ a- zA- Z0 - 9 _- ] ) + ( ( . [ a- zA- Z0 - 9 _- ] { 2 , 3 } ) { 1 , 2 } ) $/ . test ( s)
}
2、手机号码
export const isMobile = ( s) => {
return / ^ 1 [ 0 - 9 ] { 10 } $/ . test ( s)
}
3、电话号码
export const isPhone = ( s) => {
return / ^ ( [ 0 - 9 ] { 3 , 4 } - ) ? [ 0 - 9 ] { 7 , 8 } $/ . test ( s)
}
4、是否url
export const isURL = ( s) => {
return / ^ http[ s] ? : \/\/.*/ . test ( s)
}
5、是否字符串
export const isNumber = ( o) => {
return Object. prototype. toString. call ( o) . slice ( 8 , - 1 ) === 'Number'
}
6、是否数字
export const isNumber = ( o) => {
return Object. prototype. toString. call ( o) . slice ( 8 , - 1 ) === 'Number'
}
7、是否boolean
export const isBoolean = ( o) => {
return Object. prototype. toString. call ( o) . slice ( 8 , - 1 ) === 'Boolean'
}
8、是否函数
export const isFunction = ( o) => {
return Object. prototype. toString. call ( o) . slice ( 8 , - 1 ) === 'Function'
}
9、是否null
export const isNull = ( o) => {
return Object. prototype. toString. call ( o) . slice ( 8 , - 1 ) === 'Null'
}
10、是否undefined
export const isUndefined = ( o) => {
return Object. prototype. toString. call ( o) . slice ( 8 , - 1 ) === 'Undefined'
}
11、是否对象
export const isObj = ( o) => {
return Object. prototype. toString. call ( o) . slice ( 8 , - 1 ) === 'Object'
}
12、是否数组
export const isArray = ( o) => {
return Object. prototype. toString. call ( o) . slice ( 8 , - 1 ) === 'Array'
}
13、是否时间
export const isDate = ( o) => {
return Object. prototype. toString. call ( o) . slice ( 8 , - 1 ) === 'Date'
}
14、是否正则
export const isRegExp = ( o) => {
return Object. prototype. toString. call ( o) . slice ( 8 , - 1 ) === 'RegExp'
}
15、是否错误对象
export const isError = ( o) => {
return Object. prototype. toString. call ( o) . slice ( 8 , - 1 ) === 'Error'
}
16、是否Symbol函数
export const isSymbol = ( o) => {
return Object. prototype. toString. call ( o) . slice ( 8 , - 1 ) === 'Symbol'
}
17、是否Promise对象
export const isPromise = ( o) => {
return Object. prototype. toString. call ( o) . slice ( 8 , - 1 ) === 'Promise'
}
18、是否Set对象
export const isSet = ( o) => {
return Object. prototype. toString. call ( o) . slice ( 8 , - 1 ) === 'Set'
}
19、判断是否是微信浏览器
export const isWeiXin = ( ) => {
const ua = navigator. userAgent. toLowerCase ( ) ;
return ua. match ( /microMessenger/i ) == 'micromessenger'
}
20、判断是否是移动端
export const isDeviceMobile = ( ) => {
const ua = navigator. userAgent. toLowerCase ( ) ;
return / android| webos| iphone| ipod| balckberry/ i. test ( ua)
}
21、判断是否是QQ浏览器
export const isQQBrowser = ( ) => {
const ua = navigator. userAgent. toLowerCase ( ) ;
return ! ! ua. match ( /mqqbrowser|qzone|qqbrowser|qbwebviewtype/i )
}
22、判断是否是爬虫
export const isSpider = ( ) => {
const ua = navigator. userAgent. toLowerCase ( ) ;
return / adsbot| googlebot| bingbot| msnbot| yandexbot| baidubot| robot| careerbot| seznambot| bot| baiduspider| jikespider| symantecspider| scannerlwebcrawler| crawler| 360 spider| sosospider| sogou web sprider| sogou orion spider/ . test ( ua)
}
23、判断是否是ios
export const isIos = ( ) => {
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 ) {
return false
} else if ( u. indexOf ( 'Windows Phone' ) > - 1 ) {
return false
} else {
return false
}
}
24、判断是否是PC端
export const isPC = ( ) => {
var userAgentInfo = navigator. userAgent;
var Agents = [ "Android" , "iPhone" ,
"SymbianOS" , "Windows Phone" ,
"iPad" , "iPod" ] ;
var flag = true ;
for ( var v = 0 ; v < Agents. length; v++ ) {
if ( userAgentInfo. indexOf ( Agents[ v] ) > 0 ) {
flag = false ;
break ;
}
}
return flag;
}
25、去除html标签
export const removeHtmltag = ( str) => {
return str. replace ( /<[^>]+>/g , '' )
}
26、获取url参数
export const getQueryString = ( name) => {
const reg = new RegExp ( '(^|&)' + name + '=([^&]*)(&|$)' , 'i' ) ;
const search = window. location. search. split ( '?' ) [ 1 ] || '' ;
const r = search. match ( reg) || [ ] ;
return r[ 2 ] ;
}
27、动态引入js文件
export const injectScript = ( src) => {
const s = document. createElement ( 'script' ) ;
s. type = 'text/javascript' ;
s. async = true ;
s. src = src;
const t = document. getElementsByTagName ( 'script' ) [ 0 ] ;
t. parentNode. insertBefore ( s, t) ;
}
28、根据url地址下载对应东西
export const download = ( url) => {
var isChrome = navigator. userAgent. toLowerCase ( ) . indexOf ( 'chrome' ) > - 1 ;
var isSafari = navigator. userAgent. toLowerCase ( ) . indexOf ( 'safari' ) > - 1 ;
if ( isChrome || isSafari) {
var link = document. createElement ( 'a' ) ;
link. href = url;
if ( link. download !== undefined) {
var fileName = url. substring ( url. lastIndexOf ( '/' ) + 1 , url. length) ;
link. download = fileName;
}
if ( document. createEvent) {
var e = document. createEvent ( 'MouseEvents' ) ;
e. initEvent ( 'click' , true , true ) ;
link. dispatchEvent ( e) ;
return true ;
}
}
if ( url. indexOf ( '?' ) === - 1 ) {
url += '?download' ;
}
window. open ( url, '_self' ) ;
return true ;
}
29、判断el是否包含某个class
export const hasClass = ( el, className) => {
let reg = new RegExp ( '(^|\\s)' + className + '(\\s|$)' )
return reg. test ( el. className)
}
30、el添加某个class
export const addClass = ( el, className) => {
if ( hasClass ( el, className) ) {
return
}
let newClass = el. className. split ( ' ' )
newClass. push ( className)
el. className = newClass. join ( ' ' )
}
31、el去除某个class
export const removeClass = ( el, className) => {
if ( ! hasClass ( el, className) ) {
return
}
let reg = new RegExp ( '(^|\\s)' + className + '(\\s|$)' , 'g' )
el. className = el. className. replace ( reg, ' ' )
}
32、获取滚动的坐标
export const getScrollPosition = ( el = window) => ( {
x: el. pageXOffset !== undefined ? el. pageXOffset : el. scrollLeft,
y: el. pageYOffset !== undefined ? el. pageYOffset : el. scrollTop
} ) ;
33、判断是否滚动到顶部
export const scrollToTop = ( ) => {
const c = document. documentElement. scrollTop || document. body. scrollTop;
if ( c > 0 ) {
window. requestAnimationFrame ( scrollToTop) ;
window. scrollTo ( 0 , c - c / 8 ) ;
}
}
34、判断el是否在视口范围内
export const elementIsVisibleInViewport = ( el, partiallyVisible = false ) => {
const { top, left, bottom, right } = el. getBoundingClientRect ( ) ;
const { innerHeight, innerWidth } = window;
return partiallyVisible
? ( ( top > 0 && top < innerHeight) || ( bottom > 0 && bottom < innerHeight) ) &&
( ( left > 0 && left < innerWidth) || ( right > 0 && right < innerWidth) )
: top >= 0 && left >= 0 && bottom <= innerHeight && right <= innerWidth;
}
35、洗牌算法随机
export const shuffle = ( arr) => {
var result = [ ] ,
random;
while ( arr. length > 0 ) {
random = Math. floor ( Math. random ( ) * arr. length) ;
result. push ( arr[ random] )
arr. splice ( random, 1 )
}
return result;
}
36、劫持粘贴板
export const copyTextToClipboard = ( value) => {
var textArea = document. createElement ( "textarea" ) ;
textArea. style. background = 'transparent' ;
textArea. value = value;
document. body. appendChild ( textArea) ;
textArea. select ( ) ;
try {
var successful = document. execCommand ( 'copy' ) ;
} catch ( err ) {
console. log ( 'Oops, unable to copy' ) ;
}
document. body. removeChild ( textArea) ;
}
37、将数字转为大写金额
export const changeToChinese = ( Num) => {
if ( typeof Num == "number" ) {
Num = new String ( Num) ;
} ;
Num = Num. replace ( /,/g , "" )
Num = Num. replace ( / /g , "" )
Num = Num. replace ( /¥/g , "" )
if ( isNaN ( Num) ) {
return "" ;
} ;
var part = String ( Num) . split ( "." ) ;
var newchar = "" ;
for ( var i = part[ 0 ] . length - 1 ; i >= 0 ; i-- ) {
if ( part[ 0 ] . length > 10 ) {
return "" ;
}
var tmpnewchar = ""
var perchar = part[ 0 ] . charAt ( i) ;
switch ( perchar) {
case "0" :
tmpnewchar = "零" + tmpnewchar;
break ;
case "1" :
tmpnewchar = "壹" + tmpnewchar;
break ;
case "2" :
tmpnewchar = "贰" + tmpnewchar;
break ;
case "3" :
tmpnewchar = "叁" + tmpnewchar;
break ;
case "4" :
tmpnewchar = "肆" + tmpnewchar;
break ;
case "5" :
tmpnewchar = "伍" + tmpnewchar;
break ;
case "6" :
tmpnewchar = "陆" + tmpnewchar;
break ;
case "7" :
tmpnewchar = "柒" + tmpnewchar;
break ;
case "8" :
tmpnewchar = "捌" + tmpnewchar;
break ;
case "9" :
tmpnewchar = "玖" + tmpnewchar;
break ;
}
switch ( part[ 0 ] . length - i - 1 ) {
case 0 :
tmpnewchar = tmpnewchar + "元" ;
break ;
case 1 :
if ( perchar != 0 ) tmpnewchar = tmpnewchar + "拾" ;
break ;
case 2 :
if ( perchar != 0 ) tmpnewchar = tmpnewchar + "佰" ;
break ;
case 3 :
if ( perchar != 0 ) tmpnewchar = tmpnewchar + "仟" ;
break ;
case 4 :
tmpnewchar = tmpnewchar + "万" ;
break ;
case 5 :
if ( perchar != 0 ) tmpnewchar = tmpnewchar + "拾" ;
break ;
case 6 :
if ( perchar != 0 ) tmpnewchar = tmpnewchar + "佰" ;
break ;
case 7 :
if ( perchar != 0 ) tmpnewchar = tmpnewchar + "仟" ;
break ;
case 8 :
tmpnewchar = tmpnewchar + "亿" ;
break ;
case 9 :
tmpnewchar = tmpnewchar + "拾" ;
break ;
}
var newchar = tmpnewchar + newchar;
}
if ( Num. indexOf ( "." ) != - 1 ) {
if ( part[ 1 ] . length > 2 ) {
part[ 1 ] = part[ 1 ] . substr ( 0 , 2 )
}
for ( i = 0 ; i < part[ 1 ] . length; i++ ) {
tmpnewchar = ""
perchar = part[ 1 ] . charAt ( i)
switch ( perchar) {
case "0" :
tmpnewchar = "零" + tmpnewchar;
break ;
case "1" :
tmpnewchar = "壹" + tmpnewchar;
break ;
case "2" :
tmpnewchar = "贰" + tmpnewchar;
break ;
case "3" :
tmpnewchar = "叁" + tmpnewchar;
break ;
case "4" :
tmpnewchar = "肆" + tmpnewchar;
break ;
case "5" :
tmpnewchar = "伍" + tmpnewchar;
break ;
case "6" :
tmpnewchar = "陆" + tmpnewchar;
break ;
case "7" :
tmpnewchar = "柒" + tmpnewchar;
break ;
case "8" :
tmpnewchar = "捌" + tmpnewchar;
break ;
case "9" :
tmpnewchar = "玖" + tmpnewchar;
break ;
}
if ( i == 0 ) tmpnewchar = tmpnewchar + "角" ;
if ( i == 1 ) tmpnewchar = tmpnewchar + "分" ;
newchar = newchar + tmpnewchar;
}
}
while ( newchar. search ( "零零" ) != - 1 )
newchar = newchar. replace ( "零零" , "零" ) ;
newchar = newchar. replace ( "零亿" , "亿" ) ;
newchar = newchar. replace ( "亿万" , "亿" ) ;
newchar = newchar. replace ( "零万" , "万" ) ;
newchar = newchar. replace ( "零元" , "元" ) ;
newchar = newchar. replace ( "零角" , "" ) ;
newchar = newchar. replace ( "零分" , "" ) ;
if ( newchar. charAt ( newchar. length - 1 ) == "元" ) {
newchar = newchar + "整"
}
return newchar;
}
38、判断一个元素是否在数组中
export const contains = ( arr, val) => {
return arr. indexOf ( val) != - 1 ? true : false ;
}
39、数组排序 {type} 1:从小到大 2:从大到小 3:随机
export const sort = ( arr, type = 1 ) => {
return arr. sort ( ( a, b) => {
switch ( type) {
case 1 :
return a - b;
case 2 :
return b - a;
case 3 :
return Math. random ( ) - 0.5 ;
default :
return arr;
}
} )
}
40、数组去重
export const unique = ( arr) => {
if ( Array. hasOwnProperty ( 'from' ) ) {
return Array. from ( new Set ( arr) ) ;
} else {
var n = { } , r = [ ] ;
for ( var i = 0 ; i < arr. length; i++ ) {
if ( ! n[ arr[ i] ] ) {
n[ arr[ i] ] = true ;
r. push ( arr[ i] ) ;
}
}
return r;
}
}
41、求两个集合的并集
export const union = ( a, b) => {
var newArr = a. concat ( b) ;
return this . unique ( newArr) ;
}
42、求两个集合的交集
export const intersect = ( a, b) => {
var _this = this ;
a = this . unique ( a) ;
return this . map ( a, function ( o) {
return _this. contains ( b, o) ? o : null ;
} ) ;
}
43、删除其中某一个元素
export const remove = ( arr, ele) => {
var index = arr. indexOf ( ele) ;
if ( index > - 1 ) {
arr. splice ( index, 1 ) ;
}
return arr;
}
44、将类数组转换为数组
export const formArray = ( ary) => {
var arr = [ ] ;
if ( Array. isArray ( ary) ) {
arr = ary;
} else {
arr = Array. prototype. slice. call ( ary) ;
} ;
return arr;
}
45、去除空格 type: 1-所有空格 2-前后空格 3-前空格 4-后空格
export const trim = ( str, type) => {
type = type || 1
switch ( type) {
case 1 :
return str. replace ( /\s+/g , "" ) ;
case 2 :
return str. replace ( /(^\s*)|(\s*$)/g , "" ) ;
case 3 :
return str. replace ( /(^\s*)/g , "" ) ;
case 4 :
return str. replace ( /(\s*$)/g , "" ) ;
default :
return str;
}
}
46、在字符串中插入新的字符串
export const insertStr = ( soure, index, newStr) => {
var str = soure. slice ( 0 , index) + newStr + soure. slice ( index) ;
return str;
}