XEUtils 函数库

XEUtils 提供一套实用的函数,支持常用基础函数、支持任意格式的日期处理函数,cookie操作函数等...
兼容性
 |  |  |  |  |  |
---|
7+ ✔ | Latest ✔ | Latest ✔ | Latest ✔ | Latest ✔ | 6.1+ ✔ |
CDN 安装
使用 script 方式安装,XEUtils 会定义为全局变量
生产环境请使用 xe-utils.min.js,更小的压缩版本,可以带来更快的速度体验。
cdnjs 获取最新版本
点击浏览已发布的所有 npm 包源码
<script src="https://cdn.jsdelivr.net/npm/xe-utils/dist/xe-utils.js"></script>
unpkg 获取最新版本
点击浏览已发布的所有 npm 包源码
<script src="https://unpkg.com/xe-utils/dist/xe-utils.js"></script>
AMD 安装
require.js
require.config({
paths: {
'xe-utils': './dist/xe-utils.min'
}
})
NPM 安装
npm install xe-utils --save
NodeJS 导入
const XEUtils = require('xe-utils')
ES6 Module import 部分导入
import { dateToString, stringToDate } from 'xe-utils'
ES6 Module import 导入所有
import XEUtils from 'xe-utils'
API
isNaN (val) 判断是否非数值
import XEUtils from 'xe-utils'
XEUtils.isNaN(undefined)
XEUtils.isNaN({})
XEUtils.isNaN('num')
XEUtils.isNaN(true)
XEUtils.isNaN(null)
XEUtils.isNaN('')
isFinite (val) 判断是否为有限数值
import XEUtils from 'xe-utils'
XEUtils.isFinite(NaN)
XEUtils.isFinite(0)
XEUtils.isFinite(2e64)
isArray (val) 判断是否数组
import XEUtils from 'xe-utils'
XEUtils.isArray(null)
XEUtils.isArray({})
XEUtils.isArray([1,2,3])
isFloat (val) 判断是否小数
import XEUtils from 'xe-utils'
XEUtils.isFloat(null)
XEUtils.isFloat(0)
XEUtils.isFloat(3)
XEUtils.isFloat(3.3)
isInteger (val) 判断是否整数
import XEUtils from 'xe-utils'
XEUtils.isInteger(null)
XEUtils.isInteger(3.3)
XEUtils.isInteger(3)
XEUtils.isInteger(0)
isFunction (val) 判断是否方法
import XEUtils from 'xe-utils'
XEUtils.isFunction({})
XEUtils.isFunction(function(){})
isBoolean (val) 判断是否Boolean对象
import XEUtils from 'xe-utils'
XEUtils.isBoolean('false')
XEUtils.isBoolean(true)
isString (val) 判断是否String对象
import XEUtils from 'xe-utils'
XEUtils.isString(1)
XEUtils.isString(true)
XEUtils.isString('')
XEUtils.isString('abc')
isNumber (val) 判断是否Number对象
import XEUtils from 'xe-utils'
XEUtils.isNumber(null)
XEUtils.isNumber('1')
XEUtils.isNumber(1)
isRegExp (val) 判断是否RegExp对象
import XEUtils from 'xe-utils'
XEUtils.isRegExp(null)
XEUtils.isRegExp('a')
XEUtils.isRegExp(new RegExp('a'))
XEUtils.isRegExp(/\a/)
isObject (val) 判断是否Object对象
import XEUtils from 'xe-utils'
XEUtils.isObject(null)
XEUtils.isObject([])
XEUtils.isObject({})
XEUtils.isObject(123)
isPlainObject (val) 判断是否是一个对象
import XEUtils from 'xe-utils'
XEUtils.sPlainObject(null)
XEUtils.isPlainObject([])
XEUtils.isPlainObject(123)
XEUtils.isPlainObject({})
isDate (val) 判断是否Date对象
import XEUtils from 'xe-utils'
XEUtils.isDate('2017-12-20')
XEUtils.isDate({})
XEUtils.isDate(1514096716800)
XEUtils.isDate(new Date())
isError (val) 判断是否Error对象
import XEUtils from 'xe-utils'
XEUtils.isError(null)
XEUtils.isError({})
XEUtils.isError(new Error('error'))
isTypeError (val) 判断是否TypeError对象
import XEUtils from 'xe-utils'
XEUtils.isTypeError(null)
XEUtils.isTypeError({})
XEUtils.isTypeError(new TypeError('error'))
isEmpty (val) 判断是否为空,包括空对象、空数值、空字符串
import XEUtils from 'xe-utils'
XEUtils.isEmpty(0)
XEUtils.isEmpty('')
XEUtils.isEmpty(null)
XEUtils.isEmpty({})
XEUtils.isEmpty([]])
isNull (val) 判断是否为Null
import XEUtils from 'xe-utils'
XEUtils.isNull(0)
XEUtils.isNull('')
XEUtils.isNull(null)
isSymbol (val) 判断是否Symbol对象
import XEUtils from 'xe-utils'
XEUtils.isSymbol('a')
XEUtils.isSymbol(Symbol('a'))
isArguments (val) 判断是否Arguments对象
import { isArguments } from 'xe-utils'
isArguments([])
isArguments(arguments)
isElement (val) 判断是否Element对象
import XEUtils from 'xe-utils'
XEUtils.isElement({})
XEUtils.isElement(document.createElement('div'))
isDocument (val) 判断是否Document对象
import XEUtils from 'xe-utils'
XEUtils.isDocument(document.createElement('div'))
XEUtils.isDocument(document)
isWindow (val) 判断是否Window对象
import XEUtils from 'xe-utils'
XEUtils.isWindow(document)
XEUtils.isWindow(window)
isFormData (val) 判断是否FormData对象
import { isFormData } from 'xe-utils'
isFormData({})
isFormData(new FormData())
isLeapYear (date) 判断是否闰年
import XEUtils from 'xe-utils'
XEUtils.isLeapYear('2018-12-01')
XEUtils.isLeapYear('2020-12-01')
XEUtils.isLeapYear(new Date('2020/12/01'))
getType (obj) 获取对象类型
import XEUtils from 'xe-utils'
XEUtils.getType()
XEUtils.getType(null)
XEUtils.getType('')
XEUtils.getType(1)
XEUtils.getType([])
XEUtils.getType({})
XEUtils.getType(function(){})
uniqueId ( ) 获取一个全局唯一标识
import XEUtils from 'xe-utils'
XEUtils.uniqueId()
XEUtils.uniqueId()
getSize ( obj ) 返回对象的长度
import XEUtils from 'xe-utils'
XEUtils.getSize('123')
XEUtils.getSize([1, 3])
XEUtils.getSize({a: 2, b: 5})
indexOf (obj, val) 返回对象第一个索引值
import XEUtils from 'xe-utils'
XEUtils.indexOf([11], 22)
XEUtils.indexOf([11, 22], 22)
lastIndexOf (obj, val) 从最后开始的索引值,返回对象第一个索引值
import XEUtils from 'xe-utils'
XEUtils.lastIndexOf([11], 22)
XEUtils.lastIndexOf([11, 22], 22)
includes (obj, val) 判断对象是否包含该值,成功返回true否则false
import XEUtils from 'xe-utils'
XEUtils.includes([11], 22)
XEUtils.includes([11, 22], 22)
assign/objectAssign/extend ([deep], target, ...) 浅拷贝一个或者多个对象到目标对象中,如果第一值是true,则使用深拷贝
import XEUtils, { objectAssign } from 'xe-utils'
const obj1 = {a: null}
XEUtils.assign(obj1, {a: 11})
const obj2 = {a: null}
const obj3 = {bb: {b: 11}}
const obj4 = objectAssign(obj2, {a: 11})
obj3.bb = 22
const obj2 = {a: null}
const obj3 = {bb: {b: 11}}
const obj4 = XEUtils.extend(true, obj3, {a: 11})
obj3.bb = 22
stringToJson (str) 字符串转JSON
import XEUtils from 'xe-utils'
XEUtils.stringToJson('{"a":1}')
XEUtils.stringToJson('[11,22]')
jsonToString (obj) JSON转字符串
import XEUtils from 'xe-utils'
XEUtils.jsonToString({a: 1})
XEUtils.jsonToString([11, 22])
keys/objectKeys (obj) 获取对象所有属性
import XEUtils, { objectKeys } from 'xe-utils'
XEUtils.keys({a: 11})
objectKeys([11, 22])
values/objectValues (obj) 获取对象所有值
import XEUtils, { objectValues } from 'xe-utils'
XEUtils.values({a: 11})
objectValues([11, 22])
entries/objectEntries (obj) 获取对象所有属性、值
import XEUtils from 'xe-utils'
XEUtils.objectEntries({a: 11})
XEUtils.objectEntries([11, 22])
first/arrayFirst (obj) 获取对象第一个值
import XEUtils, { arrayFirst } from 'xe-utils'
XEUtils.first({a: 11, b : 22})
arrayFirst([11, 22])
last/arrayLast (obj) 获取对象最后一个值
import XEUtils, { arrayLast } from 'xe-utils'
XEUtils.last({a: 11, b: 22})
arrayLast([11, 22])
each/objectEach/arrayEach ( obj, iteratee, context ) 迭代器
import XEUtils, { objectEach, arrayEach } from 'xe-utils'
XEUtils.each({a: 11, b: 22}, (item, key) => {
})
objectEach({a: 11, b: 22}, (item, key) => {
})
arrayEach([11, 22, 33], (item, key) => {
})
groupBy ( obj, iteratee, context ) 集合分组,默认使用键值分组,如果有iteratee则使用结果进行分组
import XEUtils from 'xe-utils'
const result1 = XEUtils.groupBy([{type: 'a'}, {type: 'b'}], 'type')
const result2 = XEUtils.groupBy([{type: 'a'}, {type: 'b'}], (item, key) => {
return item.type
})
objectMap ( obj, iteratee, context ) 指定方法后的返回值组成的新对象
import XEUtils from 'xe-utils'
const result = []
XEUtils.objectMap([{type: 'a'}, {type: 'b'}], (item, key) => {
return item.type
})
clone (obj, deep) 浅拷贝/深拷贝
import XEUtils from 'xe-utils'
const v1 = {a: 11, b: {b1: 22}
const v2 = XEUtils.clone({a: 11, b: 22})
if (v1.b === v2.b) {
}
const v3 = XEUtils.clone(v1, true)
if (v1.b === v3.b) {
}
uniq/arrayUniq ( array ) 数组去重
import XEUtils, { arrayUniq } from 'xe-utils'
XEUtils.uniq([11, 22, 33, 33, 22, 55])
arrayUniq([11, 22, 33, 33, 22, 55])
union/arrayUnion ( ...array ) 将多个数的值返回唯一的并集数组
import XEUtils, { arrayUnion } from 'xe-utils'
XEUtils.union([11, 22], [33, 22], [44, 11])
arrayUnion([11, 22], [33, 22], [44, 11])
sort/arraySort ( arr, iteratee, context ) 数组按属性值升序
import XEUtils, { arraySort } from 'xe-utils'
XEUtils.sort([{a: 9}, {a: 4}, {a: 5}], 'a')
arraySort([{a: 9}, {a: 4}, {a: 5}], (v1, v2) => {
return v1.a > v2.a ? 1 : -1
})
shuffle/arrayShuffle ( array ) 将一个数组随机打乱,返回一个新的数组
import XEUtils, { arrayShuffle } from 'xe-utils'
XEUtils.shuffle([11, 22, 33, 44, 55])
arrayShuffle([11, 22, 33, 44, 55])
sample/arraySample ( array, number ) 从一个数组中随机返回几个元素
import XEUtils, { arraySample } from 'xe-utils'
XEUtils.sample([11, 22, 33, 44, 55], 3)
arraySample([11, 22, 33, 44, 55], 3)
some/arraySome ( obj, iteratee, context ) 对象中的值中的每一项运行给定函数,如果函数对任一项返回true,则返回true,否则返回false
import XEUtils, { arraySome } from 'xe-utils'
XEUtils.some([{a: 11}, {a: 22}], (item, key) => {
return item.a === 55
})
arraySome([{a: 11}, {a: 22}], (item, key) => {
return item.a === 11
})
every/arrayEvery ( obj, iteratee, context ) 对象中的值中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true,否则返回false
import XEUtils, { arrayEvery } from 'xe-utils'
XEUtils.every([{a: 11}, {a: 22}], (item, key) => {
return item.a === 11
})
arrayEvery([{a: 11}, {a: 22}]], (item, key) => {
return item.a === 11 || item.a === 22
})
filter/arrayFilter ( obj, iteratee, context ) 根据回调过滤数据
import XEUtils, { arrayFilter } from 'xe-utils'
XEUtils.filter([{a: 11}, {a: 22}], (item, key) => {
return item.a > 11
})
arrayFilter([{a: 11}, {a: 22}], (item, key) => {
return item.a > 11
})
find/arrayFind ( obj, iteratee, context ) 查找匹配第一条数据
import XEUtils, { arrayFind } from 'xe-utils'
XEUtils.find([{a: 11}, {a: 22}], (item, key) => {
return item.a === 55
})
arrayFind([{a: 11}, {a: 22}], (item, key) => {
return item.a === 22
})
map/arrayMap ( obj, iteratee, context ) 指定方法后的返回值组成的新数组
import XEUtils, { arrayMap } from 'xe-utils'
XEUtils.map([{a: 11}, {a: 22}], (item, key) => {
return item.a
})
arrayMap([{a: 11}, {a: 22}], (item, key) => {
return item.a
})
sum/arraySum ( obj, iteratee, context ) 求和函数,将数值相加
import XEUtils, { arraySum } from 'xe-utils'
XEUtils.sum([22, 66, 88])
XEUtils.sum([{aa: 11}, {aa: 22}, {aa: 66}], 'aa')
arraySum([{aa: 11}, {aa: 22}, {aa: 66}], (item, key) => {
return item.aa * 2
})
now/timestamp ( ) 返回时间戳
import XEUtils, { timestamp } from 'xe-utils'
XEUtils.now()
timestamp()
stringToDate ( str, format ) 任意格式字符串转为日期(yyyy年份、MM月份、dd天、HH小时、mm分钟、ss秒、SSS毫秒)
import XEUtils from 'xe-utils'
XEUtils.stringToDate('2017-12-20')
XEUtils.stringToDate('2017-12-20 10:10:30')
XEUtils.stringToDate('12/20/2017', 'MM/dd/yyyy')
XEUtils.stringToDate('2017/12/20 10:10:30', 'yyyy/MM/dd HH:mm')
XEUtils.stringToDate('12/20/2017 10:10:30.100', 'MM/dd/yyyy HH:mm:ss.SSS')
dateToString ( date, format ) 日期化为任意格式字符串(yyyy年份、MM月份、dd天、HH小时、mm分钟、ss秒、S毫秒、E星期几、q季度)
import XEUtils from 'xe-utils'
XEUtils.dateToString(1513735830000)
XEUtils.dateToString(new Date())
XEUtils.dateToString('2017-12-20 10:10:30', 'MM/dd/yyyy')
XEUtils.dateToString(new Date(), 'yyyy-MM-dd')
XEUtils.dateToString(new Date(), 'yyyy-MM-dd HH:mm:ss.S')
XEUtils.dateToString(new Date(), 'yyyy年MM月dd日 HH时mm分ss秒S毫秒,星期E 第q季度')
getWhatMonth ( date, mode, month ) 返回前几个月或后几个月的日期,可以指定月初或月末,默认当前
import XEUtils from 'xe-utils'
XEUtils.getWhatMonth(new Date(), -1)
XEUtils.getWhatMonth(1513735830000, -1)
XEUtils.getWhatMonth('2017-12-20', -1)
XEUtils.getWhatMonth('2017-12-20', 1)
XEUtils.getWhatMonth('2017-12-20', -1, 'first')
XEUtils.getWhatMonth('2017-12-20', 1, 'last')
getWhatWeek ( date, mode, week ) 返回前几周或后几周的日期,可以指定星期几,默认当前
import XEUtils from 'xe-utils'
XEUtils.getWhatWeek(new Date(), -1)
XEUtils.getWhatWeek(1513735830000, -1)
XEUtils.getWhatWeek('2017-12-20', -1)
XEUtils.getWhatWeek('2017-12-20', 1)
XEUtils.getWhatWeek('2017-12-20', -1, 5)
XEUtils.getWhatWeek('2017-12-20', 1, 0)
getWhatDay ( date, day ) 返回前几天或后几天的日期
import XEUtils from 'xe-utils'
XEUtils.getWhatDay(new Date(), -1)
XEUtils.getWhatDay(1513735830000, -1)
XEUtils.getWhatDay('2017-12-20', -1)
XEUtils.getWhatDay('2017-12-20', 1)
getDaysOfMonth ( date, month ) 返回当前日期月份的天数,可以指定前几个月或后几个月,默认当前
import XEUtils from 'xe-utils'
XEUtils.getDaysOfMonth(new Date())
XEUtils.getDaysOfMonth(1513735830000)
XEUtils.getDaysOfMonth('2017-12-20')
XEUtils.getDaysOfMonth('2017-12-20', -1)
XEUtils.getDaysOfMonth('2017-12-20', 1)
getDateDiff ( startDate, endDate, rules ) 返回两个日期之间差距,如果结束日期小于开始日期done为fasle
import XEUtils from 'xe-utils'
XEUtils.getDateDiff('2017-11-20', '2017-12-21')
XEUtils.getDateDiff('2017-12-20', '2017-12-21')
XEUtils.getDateDiff('2017-12-20', '2017-12-21')
XEUtils.getDateDiff('2018-01-01', '2017-12-21')
const dateDiff = XEUtils.getDateDiff('2017-12-20 10:10:30', '2017-12-21 10:15:00')
const content = `${dateDiff.mm}分${dateDiff.ss}秒`
getRandom ( min, max ) 获取一个指定范围内随机数
import XEUtils from 'xe-utils'
XEUtils.getRandom()
XEUtils.getRandom(3, 6)
XEUtils.getRandom(10, 100)
min/arrayMin ( arr, iteratee ) 获取最小值
import XEUtils, { arrayMin } from 'xe-utils'
XEUtils.min([22, 66, 77, 11])
arrayMin([{a: 11}, {a: 44}], 'a')
arrayMin([{a: 11}, {a: 44}], (item) => {
return item.a
})
max/arrayMax ( arr, iteratee ) 获取最大值
import XEUtils, { arrayMax } from 'xe-utils'
XEUtils.max([22, 66, 77, 11])
arrayMax([{a: 11}, {a: 44}], 'a')
arrayMax([{a: 11}, {a: 44}], (item) => {
return item.a
})
commafy ( num, options ) 数值千分位分隔符、小数点
import XEUtils from 'xe-utils'
XEUtils.commafy(1000000)
XEUtils.commafy(1000000, {fixed: 2})
XEUtils.commafy(1234123412341234, {spaceNumber: 4, separator: ' ', fixed: 0})
toNumber/stringToNumber ( num ) 转数值
import XEUtils from 'xe-utils'
XEUtils.toNumber(123)
XEUtils.toNumber('12.3'})
XEUtils.toNumber('abc')
escape ( str ) 转义HTML字符串,替换&, <, >, ", ', `字符
import XEUtils from 'xe-utils'
XEUtils.escape('<a>link</a>')
unescape ( str ) 反转escape
import XEUtils from 'xe-utils'
XEUtils.unescape('<a>link</a>')
browse ( ) 获取浏览器内核
import XEUtils from 'xe-utils'
XEUtils.browse()
locat ( ) 获取地址栏信息
import XEUtils from 'xe-utils'
XEUtils.locat()
parseUrl ( url ) 解析 URL 参数
import XEUtils from 'xe-utils'
XEUtils.parseUrl('http://xuliangzhan.com:8080/demo/')
getBaseURL ( ) 获取上下文路径
import XEUtils from 'xe-utils'
XEUtils.getBaseURL()
cookie ( ) Cookie操作函数
import XEUtils from 'xe-utils'
XEUtils.cookie()
XEUtils.cookie('name')
XEUtils.cookie('name', null, {expires: -1})
XEUtils.cookie('name', 'value')
XEUtils.cookie('name', 'value', {domain: 'xxx.com', path: '/', expires: 7, secure: true})
XEUtils.cookie([{name: 'name', expires: -1}])
XEUtils.cookie([{name: 'name', value: 'value'}])
XEUtils.cookie([{name: 'name', value: 'value', domain: 'xxx.com', path: '/', expires: 7, secure: true}])
混合函数
文件 ./customs.js
import XEUtils from 'xe-utils'
export function toDateStr (date) {
return XEUtils.dateToString(date, 'yyyy-MM-dd HH:mm')
}
示例 ./main.js
import Vue from 'vue'
import XEUtils from 'xe-utils'
import customs from './customs'
XEUtils.mixin(customs)
XEUtils.toDateStr()
License
Copyright (c) 2017-present, Xu Liangzhan