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

js-methods-library

v2.0.1

Published

javascript 实用函数库

Readme

js-methods-library.js

Getting Started

install

npm install js-methods-library

using

useing vue-cli

import Tools from 'js-methods-library'
Vue.use(Tools)
this.***()

useing other

<script src="js-methods-library/tools.js"></script>  
<script>
    Tools.***()
</script>

Library && Example

浏览器地址栏解析


获取当前地址栏参数,防止 xss 攻击

地址栏地址:"http://www.xxx.com/index.html?param1=aaa";
@example this.getQueryString('param1')
@param argument[0] {String} - 参数名
@returns {String} - 参数值


获取字符串参数,防止 xss 攻击

地址栏地址:"http://www.xxx.com/index.html?param1=aaa";
@example this.getQueryString("http://www.xxx.com/index.html?param1=aaa",'param1')
@param argument[0] {String} - url地址
@param argument[1] {String} - 参数名
@returns {String} - 参数值


获取地址栏#后面的值

地址栏地址:"http://www.123.com/index.html#bbb";
@example this.getRequestString()
@param 无须参数
@returns {String} - 参数值 - bbb


获取 url 的 htm 页面名称

地址栏地址:"http://www.123.com/index.html";
@example this.getUrlHtml(1)
@param argument[0] {number} - 获取类型;
1,只获取页面名称,不带 suffix 后缀;
2,取页面名称,同时带 suffix 后缀;
3,获取 suffix 父级路径与 suffix 名称,同时带 suffix 后缀;
4,获取 suffix 父级路径与 suffix 名称,不带 suffix 后缀;
undefined,type 没有值,什么也不传,获取 suffix 父级路径与当前 suffix 页面名称,不带 suffix 后缀
@param argument[1] {String} - 页面后缀,默认值'html'
@returns {String} - 参数值


编码地址

@example this.linkEncodeURI(url)
@param argument[0] {String} - 页面地址
@returns {String} - 编码后的页面地址


解码地址

@example this.linkDecodeURI(url)
@param argument[0] {String} - 页面地址
@returns {String} - 解码后的页面地址


浏览器跳转

页面跳转

@example this.forward(url) this.forward('http://www.xxx.com/index.html', {a:1,b:2});
this.forward('http://www.xxx.com/index.html', {a:1,b:2}, parent.location);
@param argument[0] {String} - 跳转地址(必传)
@param argument[1] {Object} - 附带参数(非必传)
@param argument[2] {Object} - 跳转形式(非必传) - 当前页面(location)或者(parent.location)


打开窗口

@example this.openWindow(url) this.openWindow('http://www.xxx.com/index.html', {a:1,b:2});
this.openWindow('http://www.xxx.com/index.html', {a:1,b:2}, );
@param argument[0] {String} - 跳转地址(必传)
@param argument[1] {Object} - 附带参数(非必传)
@param argument[2] {String} - 窗口打开位置(非必传)


日期时间操作

日期格式化(日期对象)

@example this.formatDate('2020/12/12 10:10:30','yyyy-MM-dd HH');
2020-12-12 10
@param argument[0] {String} date - 日期对象
@param argument[1] {String} [fmt='yyyy-MM-dd'] - 格式化格式
@returns {String} - 格式化后日期


日期格式化(yyyy-MM-dd HH:mm:ss 格式的日期)

@example this.getFormatDate('2020-12-12 10:10:30','yyyy-MM-dd HH');
2020-12-12 10
@param argument[0] {String} date - 日期对象
@param argument[1] {String} [fmt='yyyy-MM-dd'] - 格式化格式
@returns {String} - 格式化后日期


获取当前日期并格式化

@example this.getFormatDateNow();
2020-12-12
@param argument[0] 无参数
@returns {String} - 格式化后日期


比较当前时间与指定时间相差几个月

@example this.checkFormatDateToFuture('2020-12-12',3);
@param argument[0] {String} date - 日期对象
@param argument[1] {String} - 相差月数
@returns {Boolean} - true为小于num个月,false为大于num个月


生成唯一ID,时间戳加随机数

@example this.uid();
@param argument[0] 无参数
@returns {number} - 唯一ID


字符串、数组操作

判断是否为空

@example this.isEmpty(‘’);
判断undefined、null、""
@param argument[0] {String} obj - 参数名称
@returns {Boolean} - 参数值


判断对象是否为空

@example this.isObjEmpty(obj);
判断对象是否不含任何属性
@param argument[0] {Obj} obj - 参数名称
@returns {Boolean} - 参数值


判断是否是json字符串

@example this.isJsonString("{a1:1}");
true @param argument[0] {String} - 字符串
@returns {Boolean} - 参数值


当两个对象有相同的key时,快速赋值

@example this.objToValueObj("{a:1,b:2,d:5}","{a:2,b:3,c:4}");
obj1: {a:2,b:3,d:5} @param argument[0] {Object} obj1 - 被赋值对象
@param argument[1] {Object} obj2 - 赋值对象


将字符串拆分成数组

@example this.split('1,2,3',',');
[1,2,3,4]
@param argument[0] {String} str - 字符串
@param argument[1] {String} [separator=','] - 分隔符(非必传)
@returns {Array} - 数组


将数组拼装成字符串

@example this.join([{k1:'1','k2:'张三'},{k1:'2','k2:'李四'},{k1:'3','k2:'王五'}],',','k2');
'张三,李四,王五'
this.join([{k1:'1','k2:'张三'},{k1:'2','k2:'李四'},{k1:'3','k2:'王五'}],',','k1');
'1,2,3'
this.join(["1","2","3"])
'1,2,3'
@param argument[0] {Array} - 数组
@param {String} key - 作为分隔的 key,当分隔key存在时,separator必传
@param argument[1] {String} [separator=','] - 分隔符(非必传)
@returns {String} - 字符串


字符串模糊匹配

@example this.stringMatching("1,2,3,4", "2");
true @param argument[0] {String} string - 字符串
@param argument[1] {String} keyWord - 关键词
@returns {Boolean} - 参数值


将数组中某些元素重组成新的数组

@example this.joinKey([{k1:'1','k2:'张三'},{k1:'2','k2:'李四'},{k1:'3','k2:'王五'}], 'k2');
['张三', '李四', '王五'] @param argument[0] {Array} Array - 数组
@param argument[1] {String} key - 关键词
@returns {Array} - 新的数组


数组深拷贝

@example this.copyToDeep([{k1:'1','k2:'张三'},{k1:'2','k2:'李四'},{k1:'3','k2:'王五'}]); @param argument[0] {Array} Array - 数组
@returns {Array} - 结果数组


两数组取交集

@example this.getArrayMixed([1,2,3], [2,3,4]);
[2,3]
@param argument[0] {Array} Array - 数组
@param argument[1] {Array} Array - 数组
@returns {Array} - 结果数组


利用 map 进行数组去重

@example this.arrayDeDuplication(arr);
let arr = [1, 0, 8, 3, -9, 1, 0, -9, 7];
1, 0, 8, 3, -9, 7
@param argument[0] {Array} Array - 数组
@returns {Array} - 结果数组


取出数组中,某个属性相同的项组成新的集合

@example
arr = [{a:1,b:2,c:3},{a:1,b:3,c:4},{a:2,b:4,c:6}]
this.getArrayMajority(arr, 'a', 1);
[{a:1,b:2,c:3},{a:1,b:3,c:4},]
@param argument[0] {Array} Array - 数组
@param argument[1] {String} key - 属性名
@param argument[2] {String} value - 属性值
@returns {Array} - 结果数组


替换指定位置的字符串

@example this.setCharAt(str, index, chr);
@param argument[0] {String} str - 源字符串
@param argument[1] {String} index - 索引
@param argument[2] {String} chr - 替换字符
@returns {string} - 替换后的字符串


回文字符串判断

@example this.isPlalindrome('ababbaba');
true
@param argument[0] {String} str - 源字符串
@returns {Boolean} - 参数值


文件上传与转码

获取图片路径方法

@example this.getObjectURL(file);
@param argument[0] {Object} file - 图片文件对象
@returns {string} - 图片文件路径


获取formData对象

@example this.getFormData('formName字符串');
@param argument[0] {string} [form] - form选择器
@returns {Object} - formData对象


base64转换blob

@example this.convertBlob('base64字符串');
@param argument[0] {string} base64 - base64
@returns {Object} - Blob


获取文件后缀名大小(KB)

@example this.fileSize(2048);
@param argument[0] {number} size - 文件大小(BIT)
@returns {number} - size


获取文件后缀名

@example this.fileSuffix(‘a.png’);
@param argument[0] {string} fileName - 文件名称
@returns {string} - 文件后缀名


获取文件类型

@example this.fileSuffixType(‘.png’);
@param argument[0] {string} fileSuffix - 文件后缀名
@returns {string} - 文件类型


获取文件类型(根据文件名称)

@example this.fileType(‘a.png’);
@param argument[0] {string} fileName - 文件名称
@returns {string} - 文件类型


本地存储

设置 localStorage

@example this.setLocal("myLocal","myLocalVal");
@param argument[0] {string} name - 名称
@param argument[1] {object} content - 值
@returns


获取 localStorage

@example this.getLocal("myLocal");
@param argument[0] {string} name - 名称
@returns {object} content - 值


删除 localStorage

@example this.removeLocal("myLocal");
@param argument[0] {string} name - 名称
@returns


设置 sessionStorage

@example this.setSession("mySession","mySessionVal");
@param argument[0] {string} name - 名称
@param argument[1] {object} content - 值
@returns


获取 sessionStorage

@example this.getSession("mySession");
@param argument[0] {string} name - 名称
@returns {object} content - 值


删除 sessionStorage

@example this.removeSession("mySession");
@param argument[0] {string} name - 名称
@returns


判断浏览器环境

数据结构转换

json格式转树状结构(最大支持三级)

@example this.transData(data,'id','pid','children');
var data = [{id:1,pid:''},{id:1,pid:''},{id:1,pid:''},{id:11,pid:1},{id:12,pid:1},{id:2,pid:''},{id:21,pid:2}];
{"treeDatas":[{"id":1,"pid":"","level":1},{"id":1,"pid":"","children":[{"id":12,"pid":1,"level":2},{"id":11,"pid":1,"level":2},{"id":12,"pid":1,"level":2}],"level":1},{"id":2,"pid":"","children":[{"id":21,"pid":2,"level":2},{"id":21,"pid":2,"level":2}],"level":1}],"treeList":[{"id":1,"pid":"","level":1},{"id":1,"pid":"","level":1},{"id":1,"pid":"","children":[{"id":11,"pid":1,"level":2},{"id":12,"pid":1,"level":2},{"id":11,"pid":1,"level":2},{"id":12,"pid":1,"level":2}],"level":1},{"id":11,"pid":1,"level":2},{"id":12,"pid":1,"level":2},{"id":11,"pid":1,"level":2},{"id":12,"pid":1,"level":2},{"id":2,"pid":"","children":[{"id":21,"pid":2,"level":2},{"id":21,"pid":2,"level":2}],"level":1},{"id":21,"pid":2,"level":2},{"id":21,"pid":2,"level":2}]} @param argument[0] {Object} data - json数据
@param argument[1] {object} idStr - id的字符串
@param argument[2] {object} pidStr - 父id的字符串
@param argument[3] {object} childrenStr - children的字符串
@returns {Object} 树形数据


修改数组对象的key

@example this.modifyArrayFeild(Arrydata, keymap);
var Arrydata = [{name:'Lily',age:18},{name:'BKqq',age:22}];var keymap = {name:'label', age: 'value'}
@param argument[0] {array} arrayData - 目标数组
@param argument[1] {object} modifyObj - 需要修改的key与原始的kay组成的对象
@returns {array} 修改后的数组


根据树形结构反查整个家族

@example this.getFamilyTree(arr, pid, idStr, pIdStr);
@param {array} arr - 数据
@param {string|number} pid - 待查找的值
@param {string} idStr - id
@param {string} pIdStr - 父 id @returns {array}


对象赋值处理,防止污染对象

@example this.dto2entity(dto, entity);
{a: 0, b: 1, d: ""}
var dto = {a: 0, b: 1, c: 'hahaha'}
var en = {a: '', b: '', d: ''}
this.dto2entity(dto, en)
console.log(en) @param {Object} dto - 源对象
@param {Object} entity - 目标对象
@returns {array}


排序方法

用途:sort 排序参数处理-降序

@example this.getDesc('id');
var arr = [{id:2},{id:1},{id:3}];
// [{id:1},{id:2},{id:3}]
arr.sort(this.getDesc('id'))
@param {string} prop - 排序的参数
@returns {array}


生成[n,m]的随机整数

@example this.getDescDate('id');
@param argument[0] {number} minNum
@param argument[1] {number} maxNum
@returns