npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

ty-tools

v2.3.0

Published

注意:2.x.x部分方法不再兼容1.x.x!

Downloads

45

Readme

注意:2.x.x部分方法不再兼容1.x.x!

工具包

定义工具包tyTools,将常用的方法封装。

  • debounce

    函数防抖,触发高频事件后n秒内函数只会执行一次,如果n秒内高频事件再次被触发,则重新计算时间

    tyTools.debounce<T>(func:Function,time?:Number,immediate?:Boolean):T

    接收三个参数,第一个为要执行的函数,第二个可选参数,为延时秒数,默认200ms,第三个为是否立即执行一次;返回要执行的函数

  • throttle

    函数节流

    tyTools.throttle<T>(func:Function,time?:Number):T

    接收两个参数,第一个为要执行的函数,第二个可选参数,为延时秒数,默认200ms;返回要执行的函数

  • forEach

    遍历数组和对象

    tyTools.forEach<T>(val: any[] | Record<string, any> | Record<string, any>, fn: (item: T, index: any, obj: any) => void | boolean): void
  • tyTools.validate

    tyTools.validate返回一个对象:包含以下校验方法:

    • tyTools.validate.checkIdCardNumber

      tyTools.validate.checkIdCardNumber(str:string|number):boolean

      检测传入的身份证号码是否合法

    • tyTools.validate.checkPhoneNumber

      tyTools.validate.checkPhoneNumber(str:string|number):boolean

      检测传入的手机号码是否合法

    • tyTools.validate.isFloatNumber

      tyTools.validate.isFloatNumber(str:string|number):boolean

      小数数字校验

    • tyTools.validate.isIntNumber

      tyTools.validate.isIntNumber(str:string|number):boolean

      整数数字校验

    • tyTools.validate.checkUnifiedSocialCreditCode

      tyTools.validate.checkUnifiedSocialCreditCode(str:string):boolean

      统一社会信用代码校验

    • tyTools.validate.isNoSpechars

      tyTools.validate.isNoSpechars(str:string):boolean

      特殊字符校验,包括以下字符:

          const regEn = /[`~!@#$%^&*()_+<>?:"{},./;'[\]]/img
          const regCn = /[·!#¥(——):;“”‘、,|《。》?、【】[\]]/img
    • tyTools.validate.checkEmail 邮箱校验

      tyTools.validate.checkEmail(str: string): boolean
    • tyTools.validate.checkBankCardNumber

      银行卡校验

      tyTools.validate.checkBankCardNumber(str: string) :boolean
    • isNumber

      数字校验

      tyTools.validate.isNumber(num: number | string)
    • isTruthy

      tyTools.validate.isTruthy(data: any)
    • isString

      是否是字符串

      tyTools.validate.isString(str: any): boolean
    • isArray

      是否是数组

      tyTools.validate.isArray(isArr: any): boolean
    • isArrayLike

      是否是类数组

      tyTools.validate.isArrayLike(isArr: any): boolean
    • isFunction

      是否是函数

      tyTools.validate.isFunction(isArr: any): boolean
    • isObject

      是否是object

      tyTools.validate.isObject(isArr: any): boolean
    • isBaseType

      是否是基本类型

      tyTools.validate.isBaseType(isArr: any): boolean
  • tyTools.equipment

    tyTools.equipment返回一个对象:包含以下校验方法:

    • tyTools.equipment.isIOS

      tyTools.equipment.isIOS():boolean

      检测当前设备是否是ios

    • tyTools.equipment.isMobile

      tyTools.equipment.isMobile():boolean

      检测当前设备是否是移动端

  • tyTools.platform

    tyTools.platform返回一个对象:包含以下校验方法:

    • tyTools.platform.isWeChat

      tyTools.platform.isWeChat():boolean

      检测当前平台是否是微信

    • tyTools.platform.client

    浏览器版本检测

    tyTools.platform.client():{
      engine: {
        ie: string;
        gecko: string;
        webkit: string;
        khtml: string;
        opera: string;
        ver: string;
      };
      browser: {
          ie: string;
          firefox: string;
          safari: string;
          konq: string;
          opera: string;
          chrome: string;
          ver: string;
      };
    }
  • tyTools.dom

    • tyTools.dom.isDomInView

      tyTools.dom.isDomInView(config: {
          dom: Element;
          change(data: { data: boolean }): void;
      })

      dom元素是否在视野内

    • tyTools.dom.addEvent

      tyTools.dom.addEvent(dom: any, types: any, handle: any, bm: any): void

      添加事件

    • tyTools.dom.removeEvent

      tyTools.dom.removeEvent(dom: any, types: any, handle: any, bm: any): void

      移除事件

    • getAllStyle

      tyTools.dom.getAllStyle(dom: any): CSSStyleDeclaration

      获取计算样式

    • getDomSPInfo

      tyTools.dom.getDomSPInfo(dom: Element): any

      获取元素大小及其相对于视口的位置。(size——position)

    • fixedToTop

        tyTools.dom.fixedToTop(obj: {
            dom: string;
            topLength?: string;
            fixed?: Function;
            concelFixed?: Function;
        }): void

      元素滚动到顶部自动吸附

    • spaceBetween

      tyTools.dom.spaceBetween(parentDom: HTMLElement): void

      实现弹性盒子space-between

    • scrollDirection

      tyTools.dom.scrollDirection(
          data: {
              change: (data:
                  {
                      event: Event,
                      direction: { X: number, Y: number }
                  }) => void,
              config?: AddEventListenerOptions
          }
      ): { removeEvent: () => void }

      获取滚动的方向 下为正

  • tyTools.date

    • format

      //str为格式化字符串
      tyTools.date.format(str: string, date?: Date): string;
    • getDateObj

      获取时间对象

      tyTools.date.tyTools.getDateObj(str?: string | number) 

      返回值Date实例 参数默认为当前时间

    • getDateArr

      获取时间数组

      tyTools.date.getDateArr() 

      返回值:[YYYY,MM,DD]

    • getDayCount 获取传入时间所在月有几天

      tyTools.date.getDayCount(data) 
    • isOutOfDate

      是否过期 true:过期 false :未过期

      tyTools.date.isOutOfDate(time1: string, time2?: string): boolean
    • cutDown 倒计时

      tyTools.date.cutDown(start: number | string, end: number | string): string | boolean 
  • tyTools.math

    • add

        // 加法,解决js小数计算精度问题 0.2+0.1=0.30000000000000004
        tyTools.math.add(...numArr: number[]): number
    • subtr

        //减法,解决js小数计算精度问题 0.3-0.2=0.19999999999999998(第一个参数依次减去后边所有的参数)
        tyTools.math.subtr(...numArr: number[]): number
    • multiply

        //乘法,解决js小数计算精度问题 0.3*3=0.8999999999999999
        tyTools.math.multiply(...numArr: number[]): number
    • divide

        //除法,解决js小数计算精度问题 0.3/3=0.09999999999999999(第一个参数依次除以后边所有的参数)
        tyTools.math.divide(...numArr: number[]): number
  • tyTools.file

    • PictureZip

        constructor({ file, max = 200, ratio = 0.5 }: { file: File, max?: number, ratio?: number })
      file:File|FileList // 文件|文件列表
      max:number 		    //超过该值以后压缩
      ratio:number       //压缩率
      // 示例
      new tyTools.file.PictureZip({ file: this.files, ratio: 0.1 }).promise.then((res) => {
          //如果file类型为File,则返回压缩后的base64字符串;如果file类型为FileList,则返回base64组成的数组
          console.log(res);
      })
  • tyTools.data

    • merge

        tyTools.data.merge(conf1: any, conf2: any,checkFalsey?: boolean): any

      合并两个对象;递归合并;返回一个clone后的新对象;conf2合并到conf1 如果conf2某个属性为undefined或者为null,则取conf1的值;如果conf1没有,则取conf2的值 checkFalsey若为true,将判断falsely值而不是undefined或者null

    • jsonClone

      数据克隆

      tyTools.data.jsonClone(data) 

      接收要克隆的数据,返回克隆后的数据

    • dataListMerge

      数据合并

      tyTools.data.dataListMerge(data1,data2,key) 

      根据key字段,合并data1和data2数组

    • removeEmptyItem

      移除数组/对象的undefined或者null值

      tyTools.data.removeEmptyItem(arr: any[]|Record<string, any>,keepEmptyString=false):any[]|Record<string, any>

      keepEmptyString:是否保留空串

    • midHide

      数据隐藏

      tyTools.data.midHide('12345678901',3,3) // 123*****901

      该方法接收三个参数,第一个目标字符串为必填参数,第二个开头显示的字符数为选填,第三个末尾显示的字符数为选填,默认为首3尾4。

    • getDeepDataItem

      获取深层数组包含某个key值的对象

      tyTools.data.getDeepDataItem(target: any[], key: string, val: any): any
    • firstUpperCase

      首字母大写

      tyTools.data.firstUpperCase(str: string): string
    • getItemByKey

      获取数组里面包含某个key值的对象

      tyTools.data.getItemByKey(arr: any[], key: string, value: any): any
      
    • objectToQueryString

      将对象转化成查询参数

      tyTools.data.tyTools.objectToQueryString({ a: 12, b: 3 }) // a=12&b=3
    • urlStringToObj

      URL字符串转化为对象

      tyTools.data.urlStringToObj('localhost:8080/as?a=1&b=2') // {a: "1", b: "2"}
    • toFixed

      tyTools.data.toFixed(val: string | number, length = 2)
    • setSessionStorage

      sessionstorage里面存数据

      tyTools.data.setSessionStorage('userData',{:name:'john'}) 

      接收两个参数,第一个参数为key值,第二个参数为value值。

    • getSessionStorage

      sessionstorage里面取数据

      tyTools.data.getSessionStorage('userData') 

      接收一个参数,要获取的数据的key值

    • escape

      字符串编码

      tyTools.data.escape('http://localhost:8080/#/') // http%3A//localhost%3A8080/%23/
    • unescape

      字符串解码

      tyTools.data.unescape('http%3A//localhost%3A8080/%23/') // http://localhost:8080/#/
    • initObj

      初始化对象参数

      tyTools.data.initObj(target: any, val?: any) 

      接收两个参数,第一个为要修改的目标对象,第二个为对比参数,target要置为val的值。若不传第二个参数,默认置为''

    • bankNumberFormat

      格式化银行卡账号

      tyTools.data.bankNumberFormat(str) 

      返回由空格隔开的银行卡号码:1111 2222 3323 3432 2434

    • currencyFormat

      金额格式化

      tyTools.data.currencyFormat('1231312') // 1,231,312.00
    • DelCurrencyFormat

      删除千位符

      tyTools.data.DelCurrencyFormat('1,231,312.00') // 1231312.00
    • convertCurrency

      金额大写

      tyTools.data.convertCurrency('1231312') // 壹佰贰拾叁万壹仟叁佰壹拾贰元整
  • tyTools.event

    getEvent 获取事件对象

    // 示例
    tyTools.event.getEvent(e):Event