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 🙏

© 2026 – Pkg Stats / Ryan Hefner

xxy-qinshihuang

v2.0.3

Published

工具类-秦始皇

Readme

安装

npm install xxy-qinshihuang --save

使用方法

// 全量引入
import qinshihuang from 'xxy-qinshihuang'
// 部分引入
import { tools,validate,timeTools } from 'xxy-qinshihuang'

tools 工具类

目录

  • 一位数组转二维数组
  • 两个数计算百分比
  • 获取数组交集
  • 获取对象数组交集并更新原数组
  • A数组中选中的多个元素添加到B新数组中
  • 字符串空格去除与替换
  • 根据身份证号,获取生日、性别、年龄、地址码
  • 函数防抖
  • 函数节流
  • 字典数据转义
  • number类型数据加、减、乘、除运算
  • 深度拷贝
  • 手机号脱敏
  • 身份证号脱敏
  • 格式化数字,比如数字千分位
  • 获取url上的参数

oneChunkTwo 一位数组转二维数组

/**
 * 一位数组转二维数组
 * @param   {Array} sourceArr  数据源
 * @param   {number} copies  切割长度
 * @returns {Array} 二维数组
 */
qinshihuang.tools.oneChunkTwo(sourceArr,copies)

percentage 两个数计算百分比

/**
* 计算百分比
 * @param   {number} num   分子
 * @param   {number} total 分母
 * @returns {number} 返回数百分比
 */
qinshihuang.tools.percentage(num,total)

intersection 获取非对象数组交集

/**
* 获取非对象数组交集
 *  @param {Array} list 字符串数组
 *  @param {Array} args 字符串数组
 *  @returns {Array}  交集数组
 */
qinshihuang.tools.intersection(list,args)

mergeList 获取对象数组交集并更新

/**
* 获取对象数组交集并更新 
 *  @param {Array} dealData 需要处理数组,对象数组
 *  @param {String} f 对比字段
 *  @param {Array} sourceData 展示的源数据数组
 *  @returns {Array} 把两个数组的交集部分替换到源数据对应位置上
 */
qinshihuang.tools.mergeList(dealData, 'id', sourceData)

mergeNewList 多选框选中的元素数组添加到新数组中

/**
 *  多选框选中的元素数组添加到新数组中 
 *  @param {Array} dealData  用户页面显示的数组
 *  @param {String} f 对比字段
 *  @param {Array} selectionData 用户选中的元素数组
 *  @returns {Array} 用户页面显示的新数组
 */
qinshihuang.tools.mergeNewList(dealData, 'id', selectionData)

trimStart 字符串空格去除与替换

/**
 *  字符串空格去除与替换
 *  @param {String} str 需要处理字符串
 *  @returns {String} 
 */
qinshihuang.tools.trimStart(str)

idCardNo 根据身份证号,获取生日、性别、年龄、地址码

/**
  *  根据身份证号,获取生日、性别、年龄、地址码
 * @param {String} val 身份证号
 * @return {Object} {birthday: 生日, birthday: 生日, sexName: 性别, sexCode: 性别码, age: 年龄, areaCode: 地址码}
 */
qinshihuang.tools.idCardNo(val)

debounce 函数防抖 防抖:避免用户在较短时间内进行过快点击, 只有任务触发的间隔超过指定间隔的时候,任务才会执行

/**
 *  防抖:避免用户在较短时间内进行过快点击, 只有任务触发的间隔超过指定间隔的时候,任务才会执行
 * @param {Function} fn 要处理函数
 * @param {Number} interval 防抖的延时
 * @return {Function}
 */
qinshihuang.tools.debounce(fn, interval)

throttle 函数节流 节流:指定时间间隔内只会执行一次任务,不会重复提交,主要走接口的按钮都要节流

/**
 *  节流:指定时间间隔内只会执行一次任务,不会重复提交,主要走接口的按钮都要节流
 * @param {Function} fn 要处理函数
 * @param {Number} interval 节流的延时
 * @return {Function}
 */
qinshihuang.tools.throttle(fn, interval)

dictTransfer 字典数据转义

/**
 * 场景:pc端列表发布类型显示为name,但是后端传递数据是code
 * 目标字段 item.name
 * 字典数组
 * {
      name: '平台',
      code: 0
    },
    {
      name: '机构',
      code: 1
    }
 * 字典数据转义 
 * @param {String | Number} targetValue 需要转义的目标字段
 * @param {Array} List 需要转义的字典数组
 * @return {String | Number} 返回转义后的数据
 */
qinshihuang.tools.dictTransfer(targetValue, list, 'code', 'name')

numAdd 加法运算,避免带有小数点的数据相加后产生精度损失。

/**
 * 场景:商品金额交易会产生意想不到的结果哦  例如 0.2+0.4 = 0.6 ?
 *  避免数据相加小数点后产生多位数和计算精度损失
 * @param {Number} num1
 * @param {Number} num2
 * @return {Number}
 */
qinshihuang.tools.numAdd(num1, num2)

numSub 减法运算,避免带有小数点的数据相减后产生精度损失。

/**
 *  避免数据相加小数点后产生多位数和计算精度损失
 * @param {Number} num1
 * @param {Number} num2
 * @return {Number}
 */
qinshihuang.tools.numSub(num1, num2)

numMulti 乘法运算,避免带有小数点的数据相乘后产生精度损失。

/**
 *  避免数据相加小数点后产生多位数和计算精度损失
 * @param {Number} num1
 * @param {Number} num2
 * @return {Number}
 */
qinshihuang.tools.numMulti(num1, num2)

numDiv 除法运算,避免带有小数点的数据相法后产生精度损失。

/**
 *  避免数据相加小数点后产生多位数和计算精度损失
 * @param {Number} num1
 * @param {Number} num2
 * @return {Number}
 */
qinshihuang.tools.numDiv(num1, num2)

deepCopy 深度拷贝

/**
 * 为什么不用 JSON.parse(JSON.stringify(...)) 的方式实现?
 *  JSON.parse 方式无法拷贝函数
 * @param {Object} data 要拷贝的对象
 * @returns {Object} 拷贝出的新对象
 */
qinshihuang.tools.deepCopy(data)

desensitizationPhone 手机号脱敏

/**
 * @param {String} phone
 * @return {String}
 */
qinshihuang.tools.desensitizationPhone(phone)

desensitizationIdCard 身份证号脱敏

/**
 * 
 * 身份证号脱敏
 * @param {String} string
 * @return {String} 123****1234
 */
qinshihuang.tools.desensitizationIdCard(data)

formatNumber 格式化数字,比如数字千分位

/**
 * @param {String|Number} number 要格式化的数字
 * @param {Number} position 每隔几位数进行分割 默认3
 * @param {Number} decimal 要保留的小数位 默认2
 * @param {String} symbol 用来分割的符号,默认,
 * @return {String} 1,234,567.00
 */
qinshihuang.tools.formatNumber(number)

formatNumber 格式化数字,比如数字千分位

/**
 * 获取url上的参数
 * @param {String} url url
 * @param {String} key 要获取的key,不传返回对象
 * @return {String | Object} 
 */
qinshihuang.tools.getUrlParam(url,key)

timeTools 时间格式化工具

  • 格式化时间函数
  • 秒数转时间字符串
  • 时间字符串转秒数
  • 秒数转天、小时、分
  • 获得某年某月天数

dateFtt 格式化时间函数

/**
*  格式化时间函数
 * @param  {String} fmt yyyy-MM-dd hh:mm:ss  格式化类型
 * @param  {String|Date}  date  时间字符串或date对象
 * @return {String} 2017-12-09 12:22:03
 */
qinshihuang.timeTools.dateFtt(fmt, date)

secToTime 秒数转时间字符串

/**
* @param {Number} time 秒数 如:86400
 * @return {String} 格式化后的时分秒,如:'24:00:00'
 */
qinshihuang.timeTools.secToTime(time)

timeToSec 时间字符串转为秒

/**
* @param {Number} time 秒数 如:86400
 * @return {String} 格式化后的时分秒,如:'24:00:00'
 */
qinshihuang.timeTools.timeToSec(time)

timeToStr 秒数转为秒、分、时、天

/**
 * 秒数转分、时、天
 * @param {*} time  86400
 * @returns   24小时
 */
qinshihuang.timeTools.timeToStr(time)

getMonthDays 获得某年某月天数

/**
*  @params year 年
 * @params month 月份
 *  @returns   31
 */
qinshihuang.timeTools.getMonthDays(year,month)

validate 校验类

目录

  • 身份证号是否合法
  • 手机号是否合法
  • 是否都是中文
  • 邮政编码是否合法
  • 内容是否是email地址
  • 内容是否是IP
  • 内容是否是URL地址
  • 内容是否是合法的护照号码(包含香港、澳门)
  • 内容是否是合法的银行卡号
  • 验证指定的内容是否是金额

idCard 验证身份证号是否合法

/**
 * @param {String} idCard
 * @return {Boolean}
 */
qinshihuang.validate.idCard(idCard)

phone 验证手机号是否合法

/**
 * @param {String} phone
 * @return {Boolean}
 */
qinshihuang.validate.phone(phone)

chinese 验证指定的内容是否都是中文

/**
 * @param {String} str
 * @return {Boolean}
 */
qinshihuang.validate.chinese(str)

postalCode 验证邮政编码是否合法

/**
 * @param {String} str
 * @return {Boolean}
 */
qinshihuang.validate.postalCode(str)

email 验证指定的内容是否是email地址

/**
 * @param {String} str
 * @return {Boolean}
 */
qinshihuang.validate.email(str)

url 验证指定的内容是否是URL地址

/**
 * @param {String} str
 * @return {Boolean}
 */
qinshihuang.validate.url(str)

ip 验证指定的内容是否是IP

/**
 * @param {String} str
 * @return {Boolean}
 */
qinshihuang.validate.ip(str)

emoji 验证指定的内容是否包含emoji表情符

/**
 * @param {String} str
 * @return {Boolean}
 */
qinshihuang.validate.emoji(str)

bankCard 验证指定的内容是否是合法的银行卡号

/**
 * @param {String} str
 * @return {Boolean}
 */
qinshihuang.validate.bankCard(str)

passport 验证指定的内容是否是合法的护照号码(包含香港、澳门)

/**
 * @param {String} str 
 * @return {Boolean}
 */
qinshihuang.validate.passport(str)

relAmtCheck 验证指定的内容是否是金额

/**
 * @param {String} str  整数或者小数(小数前十位、后2位)
 * @return {Boolean} 
 */
qinshihuang.validate.relAmtCheck(str)