js+ 是一个js的拓展库,根据实践经验在原生js的基础上添加、重写了一些函数,并借鉴了一些其他语言的函数,使得编程更加便捷。(部分函数改编自网络)
建议先clone至本地再引用
- script标签引用:
<script src="./js-plus/src/js_plus.min.js"></script>
- node.js require
require("./js-plus/src/js_plus");
本文档中尖括号(<>)内表示参数或返回值类型
Tip: 代表任意类型,<Array Number[]> 代表数字类型的数组
-
字符串(String)
<String> String.prototype.padStart(<Number>targetLength, <Number>padString)
字符串前补位(ES6+)<String> String.prototype.padEnd(<Number>targetLength, <Number>padString)
字符串后补位(ES6+)<String> String.random(<Number>len, <Array String[]>prevent=[])
随机字符串:生成不包含prevent
(通常是已生成的随机字符串)的长度为len
的随机字符串
-
数(Number)
<String> Number.prototype.padding(<Number>start, <Number>end)
小数点前后补位:补全至小数点前start
位,后end
位
-
数学(Math)
<Number> Math.floor(<Number>num=0, <Number>accuracy)
函数重写:将num
向下取整到10^(-accuracy)
精度<Number> Math.round(<Number>num=0, <Number>accuracy)
函数重写:将num
四舍五入到10^(-accuracy)
精度<Number> Math.ceil(<Number>num=0, <Number>accuracy)
函数重写:将num
向上取整到10^(-accuracy)
精度<Number> Math.random(<Number>start=1, <Number>end, <Number>step)
函数重写:生成范围在[start, end)
内,步长为10^(-step)
的随机数<Number> Math.randomError(<Number>range=0.1, <Number>center=0)
随机误差:生成范围在center-range
到center+range
内的随机数<Number> Math.randomND(<Number>mean=0, <Number>stdev=1)
随机取样:生成均值为mean
,标准差为stdev
的随机正态取样<Number> Math.limitRange(<Number>num, <Number>min, <Number>max, <Number>step)
范围限制:将num
限制在[min, max)
内,步长为10^(-step)
(大于取max
,小于取min
)<Number> Math.modRange(<Number>num, <Number>min, <Number>max, <Number>step)
取余范围限制:将num
限制在[min, max)
内,步长为10^(-step)
(大于则减,小于则加,直至在范围内)<Number> Math.sum(...<Number>num)
求和:将输入参数相加(自动除去NaN
)<Number> Math.avg(...<Number>num)
求平均值:将输入参数相加并除以总数量(自动除去NaN
)<Number> Math.toRad(<Number>deg)
转弧度:将deg
角度转为弧度<Number> Math.toDeg(<Number>rad)
转角度:将rad
弧度转为角度
-
对象(Object)
<Object> Object.map(<Object>object, <Function>f=(v, i, object)=>v)
类似Array.map
:用函数f(v, i, object)
遍历object
对象<Object> Object.some(<Object>object, <Function>f=(v, i, object)=>v)
类似Array.some
:用函数f(v, i, object)
遍历object
对象,若函数f
返回true
则停止并返回true
,否则返回false
<Object> Object.every(<Object>object, <Function>f=(v, i, object)=>v)
类似Array.every
:用函数f(v, i, object)
遍历object
对象,若函数f
返回false
则停止并返回false
,否则返回true
<Object> Object.and(<Object>obj1={}, <Object>obj2={}, <Object>index=obj2)
对象与操作:以index
的键值为基准对obj1
和obj2
每个项目进行与(&&)操作<Object> Object.or(<Object>obj1={}, <Object>obj2={}, <Object>index=obj2)
对象或操作:以index
的键值为基准对obj1
和obj2
每个项目进行或(||)操作 (可用于设置默认值)
-
数组(Array)
<Array Any[]> Array.new(<Any>value, ...<Array Number[]>len)
生成任意维度数组:即生成len[0]*len[1]*…*len[n]
的n维数组,并用value
(可为函数)填充每一项<Array Number[]> Array.range(<Number>start, <Number>end, <Number>step=1)
生成范围在[start, end)
内,步长为10^(-step)
的数组 (仿python
的range
函数)<Array Number[]> Array.random(<Number>length, <Number>start, <Number>end, <Number>step)
生成长度为length
并用Math.random(<Number>start, <Number>end, <Number>step)
填充的数组 (仿python
的numpy.random
函数)<Number> Array.prototype.sum()
元素求和:对自身进行Math.sum(...this)
<Number> Array.prototype.avg()
元素求平均值:对自身进行Math.avg(...this)
<Number> Array.prototype.min()
元素取最小值:对自身进行Math.min(...this)
<Number> Array.prototype.max()
元素取最大值:对自身进行Math.max(...this)
<Bool> Array.prototype.include(<Any>item)
是否包括某项:查找自身是否包括某项<Any> Array.prototype.randomSelect(<Array Number[]>probability)
按概率随机选择:随机选择自身的一个元素,如有probability
则第i
项被选择的概率为probability[i]
<Array> Array.prototype.shuffle()
打乱数组:将数组原地打乱
-
日期与时间(Date)
<String> Date.prototype.format(<String>fmt)
日期格式化:yyyy
年,MM
月,dd
日,q
季度,hh
时,mm
分,ss
秒,SS
毫秒
-
网址(location)
<String> location.getQueryString(<String>name)
获取网址GET
参数中name
对应的值
-
数据操作(URL)
<Promise String> URL.image2base64(url, type="image/png")
图片url 转 base64链接(返回Promise
)<String> URL.blob2url(<Blob>blob)
blob 转 临时url链接<String> URL.blob2base64(<Blob>blob)
blob 转 base64链接(返回Promise
)<Blob> URL.base64ToBlob(<String>url)
base64链接 转 blob
-
设备(navigator)
<Number> navigator.device
设备环境属性代码:-2
代表移动端html5plus
环境,-1
代表移动端其他环境,2
代表桌面端Electron
环境,1
代表桌面端其他环境
-
调试(console)
<Void> console.time(<String>name, <Function>func)
函数重写:调试中对函数运行时间计时(计时自动结束)
-
全局对象(gloalThis)
<Object> gloalThis
表示当前的全局对象(ES6+):浏览器环境返回Window
,node.js
环境返回global
,否则返回this
<Any> OR(...<Any>values)
取有效默认值:在values
中找到第一个有效真值(除undefined
和null
外的值),用于代替||
运算符,相当于使用??
运算符(ES6+)<Any> ATTR(<Object>obj, ...<String>attrNames)
取有效属性:返回obj[attrName1][attrName2]...
,若不存在则返回undefined
,相当于使用?.
运算符(ES6+)<Bool> NEAR(<Number>a, <Number>b, <Number>r=1e-8)
判断实数是否接近:比较a
和b
的大小是否超过精度r
(常用于比较实数/小数是否相等)