union-util
一个工具库,包含有
Date
、Array
、File
、Path
等不同类型的一些处理,便于开发。例如对于Array
有不同的排序、异步遍历等操作。
使用
npm install union-util --save
union-util/array
walk(arr:any[],cal: Function)
遍历一个数组,并返回值给对应的回调函数进行处理,这里的回调函数可以是异步的Promise(async))
walkcb(arr:any[],cal:Function)
同walk 不过,,可能存在的情况是回调函数嵌套回调函数而不是(async),这里相当于将回调函数的回调使用上了
let arr = 1234;
join(arr:any[],symbol:string,begin:number,end: number)
同array的join,这里可以指定位置
reduce(arr : any[], func : (value? : any, index? : number, v? : number) => any)
一个归并操作,同
Array.reduce
,这里不同的是,Function可以是一个一步操作
map(arr : any[], func : (value? : any, index? : number) => any
遍历操作,同
Array.map
,不同的是这里支持异步的遍历方法
find(arr : any[], func : (value? : any, index? : number) => any)
查找操作,同
Array.find
,同样的,这里也是支持异步操作
findPro(arr:any[],func:(value?:any,index?:number,extra?: FindPExtraValue)=>any)
同上
find
,不过,有的时候可能在查找的时候需要自定义一些中间值进行存储与共享,因此在这里加入了extra
选项
extra的定义
;
- findIndex 表示的是实际
find
最后找到的那个下标 - 其他的都可以用户进行自己定义,比如
index
可以表示实际的需要的位置
主要就是一个简单的存储,可以让每个遍历中共享数据。
union-util/file
walk(src:string,onFile:Function,onDirectory:Function)
遍历某个文件夹,并根据对应的文件和文件夹触发对应的事件或者方法
exists(filename : string): Promise<fs.Stats>
判断某个文件是否存在,并返回最终的文件状态,可以根据文件状态查看是否是文件还是文件夹。
existsSync(filename : string) : fs.Stats
同
exists
,不过这里是异步的
fileExists(filename : string): Promise
判断文件是否存在(一定得是文件)
fileExistsSync(filename : string): boolean
以同步的方式判断是否存在文件
directoryExists(filename : string): Promise
判断对应文件夹是否存在,返回一个promise
directoryExistsSync(filename : string): boolean
以同步的方式判断文件夹是否存在
union-util/interface
getAllIps():Array
返回本机所有的IP地址
union-util/merge
normal(obj1 : any, obj2 : any)
浅复制
deep(obj1:any,obj2:any)
深度复制(支持循环引用的复制)
union-util/sort
exchange(res:any[],i:number,j:number)
交换一个数组的i,j位置的值
order(arr:any[],ifasyn:boolean = true,ifnew: boolean = false,getValue?: Function)
默认的一个排序,默认采用的是归并排序
orderByKey(arr : any[], key : string, ifasync : boolean,ifnew:boolean)
通过数组内的对象的某个键值去排序
quick(arr : any[], ifasync : boolean = true, ifUseNew : boolean = false, getValue?: Function)
快速排序,从左向右的方式遍历
quickPro(arr : any[], ifasync : boolean = true, ifUseNew : boolean = false, getValue?: Function)
快速排序,同前面的不同的是,这里是从右边向左边遍历,速度会更快,效率也更高
heap(arr : any[], ifasync : boolean = true, ifUseNew : boolean = false, getValue?: Function)
堆排序
merge(arr : any[], ifasync : boolean = true, ifUseNew : boolean = false, getValue?: Function)
归并排序
bubble(arr : any[], ifUseNew : boolean = false, getValue?: Function, ifasync : boolean = true)
冒泡排序
union-util/promise
all(arr:any[])
同
Promise.all
allSync(arr:any[])
Promise.all
是异步,这里是同步,就是按顺序执行