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 🙏

© 2024 – Pkg Stats / Ryan Hefner

c-tools-js

v2.1.5

Published

工具类

Downloads

284

Readme

assets

苹方字体

c-tools-js/assets/font/apple

scss

c-tools-js/assets/scss/comm.scss 公共样式

c-tools-js/assets/scss/phone.scss 手机样式

css

c-tools-js/assets/css/comm.css 公共样式

c-tools-js/assets/css/phone.css 手机样式


echarts

chinajs 中国地图 解决文字重叠问题

import Vue from 'vue'
import * as echarts from 'echarts'
import 'c-tools-js/assets/echarts/map-chinajs'

Vue.prototype.$echarts = echarts

Color

/**
 * rgb 转 hex
 * @param {String} rgb 颜色 rgb(255,255,255)
 * @return hex
 */
RgbToHex

/**
 * hex 转 rgb 例如:'#23ff45'
 * @param {String} hex 颜色 
 * @param {Boolean} str 是否字符串, true为数组 
 * @return string
 */
HexToRgb

/**
 * 生成随机十六进制颜色
 * @return hex
 */
RandomHex

/**
 * 生成随机RGB颜色
 * @return string
 */
RandomRGB


/**
 * 求两个颜色之间的渐变值
 * @param {string} startColor 开始的颜色
 * @param {string} endColor 结束的颜色
 * @param {number} step 颜色等分的份额
 * */
ColorGradient

/**
 * JS颜色十六进制转换为rgb或rgba,返回的格式为 rgba(255,255,255,0.5)字符串
 * @param {String} color 十六进制的色值
 * @param {Number} alpha rgba的透明度,默认0.3
 */
ColorToRgba 

Cookie

/**
 * 获取cookie
 * @param {String} name cookie名
 */
GetCookie

/**
 * 清除全部Cookie
 */
ClearCookies

Date

/**
 * 查找日期位于一年中的第几天
 * @param {Date} date new Date()
 * dayOfYear(new Date())
 * Result: 272
 */
DayOfYear

Is

/**
 * 是否IE
 */
IsIE 

/**
 * 是否Edge
 */
IsEdge

/**
 * 是否火狐
 */
IsFirefox

/**
 * 对象是否相等
 * @param {Object} a 
 * @param {Object} b 
 * @returns {Boolean} 
 */
ObjectEquals

/**
 * 数组是否相等
 * @param {Array} arrayA 
 * @param {Array} arrayB 
 * @returns {Boolean} 
 */
ArrayEquals

/**
 * 数组/对象 是否相等
 * @param {Array | Object} value1 
 * @param {Array | Object} value2 
 * @returns {Boolean} 
 */
IsEqual

/**
 * 是否为空
 * @param {String} val 
 * @returns {Boolean} 
 */
isEmpty 

Number

/**
 * Comma用于分割数字,默认为3位分割,一般用于格式化金额
 * @param {Number} source 数字
 * @param {Int} length 分割位, 默认为3位
 * Comma(21342132) // 21,342,132
 * Comma(21342132, 4) // 2134,2132
 * Comma(21342132.234) // 21,342,132.234
 */
Comma

/**
 * Pad用于按照位数补0
 * @param {Number} source 数字
 * @param {Int} length 补充位, 默认为2位
 * Pad(1) // 01
 * Pad(234, 4) // 0234
 */
Pad 

/**
 * Random用于生成两个整数范围内的随机整数
 * @param {Int} min 最小
 * @param {Int} max 最大
 */
Random

Object

/**
 * 检查是否对象数组
 * @param {Array|Object} data 
 * @return Boolean
 */
IsArrayObject

/**
 * 检查是否对象
 * @param {Array|Object} data 
 * @return Boolean
 */
IsObject

/**
 * 检查是否函数
 * @param {Array|Object} data 
 * @return Boolean
 */
IsFunction

/**
 * 检查是否数组
 * @param {Array|Object} data 
 * @return Boolean
 */
IsArray

/**
 * 检查是否字符串
 * @param {Array|Object} data 
 * @return Boolean
 */
IsString

/**
 * 拷贝
 * @param {Array | Object} obj 
 * @returns obj
 */
Clone

/**
 * 使用递归的方式实现数组、对象的深拷贝
 * @param {Array | Object} obj 
 * @returns obj
 */
DeepClone

/**
 * JS对象深度合并
 * @param {Object} target 当前对象
 * @param {Object} source 合并对象
 * @returns obj
 */
DeepMerge

/**
 * 删除空的参数(常用于post请求)
 * @param {*} obj 
 * @return obj
 */
DeleteNullObj 

Random

/**
 * 打乱数组
 * @param {Array} arr 数组
 * shuffleArray([1, 2, 3, 4])
 * Result: [ 1, 4, 3, 2 ]
 */
ShuffleArray

RegExp

/**
 * 验证手机号码
 * @param {Number, String} str
 */
RegExpChinaMobile

/**
 * 火车车次
 * @param {Number, String} str
 * 例如: G1868, D102, D9, Z5, Z24, Z17
 */
RegExpTrainNumber

/**
 * 身份证号, 支持1/2代(15位/18位数字)
 * 例如: 622223199912051311, 12345619991205131x, 123456991010193
 */
RegExpIDCard

/**
 * 香港身份证
 * @param {Number, String} str
 * 例如: K034169(1)
 */
RegExpHKIDCard

/**
 * 澳门身份证
 * 例如: 5686611(1)
 */
RegExpMacaoIDCard

/**
 * 台湾身份证
 * 例如: U193683453
 */
RegExpTaiwanIDCard 

/**
 * 护照(包含香港、澳门)
 * 例如: s28233515, 141234567, 159203084, MA1234567, K25345719
 */
RegExpPassport

/**
 * 邮政编码(中国)
 * 例如: 734500, 100101
 */
RegExpPostalCode 

/**
 * 密码强度校验,最少6位,包括至少1个大写字母,1个小写字母,1个数字,1个特殊字符
 * 例如: Kd@curry666
 */
RegExpPassword

/**
 * 用户名校验,4到16位(字母,数字,下划线,减号)
 * 例如: xiaohua_qq
 */
RegExpUserName

/**
 * 必须带端口号的网址(或ip)
 * 例如: https://www.qq.com:8080, 127.0.0.1:5050, baidu.com:8001, http://192.168.1.1:9090 , 反例: 192.168.1.1, https://www.jd.com
 */
RegExpAddressOrIp

/**
 * 网址(url,支持端口和"?+参数"和"#+参数)
 * 例如: www.qq.com, https://baidu.com, 360.com:8080/vue/#/a=1&b=2
 */
RegExpAddress

/**
 * 统一社会信用代码
 * 例如: 91230184MA1BUFLT44, 92371000MA3MXH0E3W
 */
RegExpSocialCredit

/**
 * 视频(video)链接地址
 * 例如: http://www.abc.com/video/wc.avi
 * 格式:swf|avi|flv|mpg|rm|mov|wav|asf|3gp|mkv|rmvb|mp4
 */
RegExpVideo

/**
 * 图片(image)链接地址
 * 例如: https://www.abc.com/logo.png
 * 格式:gif|png|jpg|jpeg|webp|svg|psd|bmp|tif
 */
RegExpImage

/**
 * 数字/货币金额(支持负数、千分位分隔符)
 * 例如: 100, -0.99, 3, 234.32, -1, 900, 235.09, 12,345,678.90
 */
RegExpCurrency

/**
 * 邮箱
 * 例如: [email protected], [email protected], 汉字@qq.com
 */
RegExpEmail

/**
 * ip-v4[:端口]
 * 例如: 172.16.0.0, 172.16.0.0:8080, 127.0.0.0, 127.0.0.0:998
 */
RegExpIPv4 

/**
 * ip-v6[:端口]
 * 例如: 2031:0000:130f:0000:0000:09c0:876a:130b, [2031:0000:130f:0000:0000:09c0:876a:130b]:8080
 */
RegExpIPv6

String

/**
 * 英文字符串首字母大写
 * @param {String} str 英文字符串
 * @return str
 */
Capitalize

/**
 * 去除空格
 * @param {String} string 字符串
 * @param {String} pos 可选(both:两端, left:左端, right:右端, all:全部)
 * @return str
 */
Trim

/**
 * json对象转url参数: {aaa: 1} => a=1
 * @param {*} obj 转化对象
 * @param {*} encode 是否需要encode
 * @return str
 */
Query2String

/**
 * url参数转json对象: a=1 => {aaa: 1}
 * @param {*} str 转化字符串
 * @param {*} decode 是否需要decode
 * @return obj
 */
String2Query

/**
 * 以json的格式获取当前url上的参:
 * http://www.taobao.com?a=1 => {a: 1}
 * @return obj
 */
GetLocationQuery

/**
 * 本算法来源于简书开源代码,详见:https://www.jianshu.com/p/fdbf293d0a85
 * 全局唯一标识符(uuid,Globally Unique Identifier),也称作 uuid(Universally Unique IDentifier) 
 * 一般用于多个组件之间,给它一个唯一的标识符,或者v-for循环的时候,如果使用数组的index可能会导致更新列表出现问题
 * 最可能的情况是左滑删除item或者对某条信息流"不喜欢"并去掉它的时候,会导致组件内的数据可能出现错乱
 * v-for的时候,推荐使用后端返回的id而不是循环的index
 * @param {Number} len uuid的长度
 * @param {Boolean} firstU 将返回的首字母置为"u"
 * @param {Nubmer} radix 生成uuid的基数(意味着返回的字符串都是这个基数),2-二进制,8-八进制,10-十进制,16-十六进制
 */
Guid

Timer

/**
 * 防抖原理:一定时间内,只有最后一次操作,再过wait毫秒后才执行函数
 * @param {Function} func 要执行的回调函数 
 * @param {Number} wait 延时的时间
 * @param {Boolean} immediate 是否立即执行 
 * @return null
 */
Debounce


/**
 * 节流原理:在一定时间内,只能触发一次
 * @param {Function} func 要执行的回调函数 
 * @param {Number} wait 延时的时间
 * @param {Boolean} immediate 是否立即执行
 * @return null
 */
Throttle

Tree

/**
 * 递归 -> children 数组小于1 设置为 undefined
 * @param {Array} data 递归数组
 * @param {String} children 递归字段键
 * @returns data
 */
SetTreeChildrenBlankToUndefined

/**
 * 递归修改键
 * @param {Array} data 递归数组
 * @param {Array} changeKey 递归修改名 [{ from: val, to: val }, { from: val, to: val }]
 * @param {Array} children 递归数组名
 * @returns data
 */
ChangeTreeDataName 

/**
 * 递归排序
 * @param {Array} data 递归数组
 * @param {String} children 递归字段键
 * @param {String} sort 排序字段键
 * @returns data
 */
SortTreeData

/**
 * 根据子级id递归寻找所有父级
 * @param {array} list 寻找数组
 * @param {id} id id
 * @param {string} checkId 递归id字段名 默认id
 * @param {string} checkChildren 递归children字段名 默认children
 */
FindTreeParentId

/**
 * 根据数组遍历所有id
 * @param {array} list 寻找数组
 * @param {string} checkId 需要遍历的字段
 * @param {string} checkChildren 需要遍历的children键
 */
FindTreeAllId