/**
* 将参数格式化为对象
* @param urlParams type string
* @example
* let urlParams = 'name="xiaoliu"&age=20&sex="男"'
* getUrlObject(urlParams)
* @returns
* {
* name:"xiaoliu",
* age:20,
* sex:"男",
* }
*/
 export const getUrlObject = (urlParams) => {
try {
if (typeof urlParams !== 'string') return;
return urlParams.split('&').reduce((prev, curr) => {
curr = curr.split('=');
return Object.assign(prev, {[curr[]]: curr[]});
}, {});
} catch (err) {
throw new Error(`${err}in getUrlObject`);
}
};
/**
* 替换url上的匹配字段
* @param url @type string 需要替换的url
* @param data @type object 代替换的数据参数
* @example
* let url = 'ceshi/url/delete/^.^{id}';
* let data = {id:2};
* @returns 'ceshi/url/delete/2'
*/
export const formatUrl = (url, data) => {
try {
return url.replace(/\^\.\^\{(\w+)\}/g, function (match, key) {
return data[key];
});
} catch (err) {
throw new Error(`${err}in formatUrl`);
}
};

/**
* 从源数据中替换指定内容为指定模板
* @param template 模板中需要指定特殊字符串(^.^{VALUE})用来替换匹配到的值(replaceVal)
* @param replaceVal 需要替换的内容
* @param sourceVal //源数据
* @example
* let template = '<span style="color: red">^.^{VALUE}</span>';
* let replaceVal = '替换';
* let sourceVal = '这个是替换匹配值的方法'
* replaceTemplate (template, replaceVal, sourceVal)
* @returns 这个是<span style="color: red">替换</span>匹配值的方法
*/
export const replaceTemplate = (template, replaceVal, sourceVal) => {
if (!replaceVal) return sourceVal;
return sourceVal.replace(new RegExp(replaceVal, 'g'), (match) => {
return template.replace(/\^\.\^{VALUE}/, () => {
return match;
});
});
};
/**
* 从数组对象中获取给定参数的值得数组集合
* @param params @type Array|String 需要收集的参数列表
* @param list @type Array 源列表数据
* @example
* let params = ['id','name']
* let list = [{id:1,name:'xiaoming',desc:'ceshi'},{id:2,name:'xiaozhang',desc:'ceshi2'}]
* getParamsArray(params, list)
* @returns [[1,2],['xiaoming','xiaozhang']]
*/
export const getParamsArray = (params = [], list = []) => {
try {
params = Array.isArray(params) ? params : [params];
return list.reduce((a, b) => {
return params.map((name, index) => {
return (a[index] || []).concat(b[name] || [0]);
});
}, []);
} catch (err) {
throw new Error(err);
}
};
/**
* 返回两个数组的交集
* @param arr1
* @param arr2
*/
export const arraryIntersect = (arr1 = [], arr2 = []) => {
return arr1.filter(v => {
return arr2.includes(v);
});
};
/**
* 格式化字节
* @param value @type number 字节大小
* @param unit @type string 字节单位
* @example
formatByte(1024*1024,'Bytes');
* @returns {value:1024,unit:'KB'}
*/
export const formatByte = (value, unit = 'Bytes') => {
try {
let UNITCOLLECTION = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB'];
let data = {
value: value,
unit: unit
};
UNITCOLLECTION = UNITCOLLECTION.slice(UNITCOLLECTION.indexOf(unit) + 1);
while (data.value > 1024 && UNITCOLLECTION.length > 0) {
data.value = data.value / 1024;
data.unit = UNITCOLLECTION.splice(0, 1)[0];
};
return data;
} catch (err) {
throw new Error(`${err}in formatUrl`);
}
};
Bytes

JS常用的方法总结的更多相关文章

  1. JS常用校验方法(判断输入框是否为空,数字,电话,邮件,四舍五入等)

    JS常用校验方法: 1.判断输入框是否为空,为空时弹出提示框 2.关闭窗口 3.检查输入字符串是否为数字 4.强制把大写转换成小写 5.手机号码校验,长度为11位数字. 6.电子邮件校验 7.电话号码 ...

  2. 【js常用DOM方法】

    介绍几个js DOM的常用方法 获取元素节点 getElementById  getElementsByTagName  getElementsByClassName 先写一个简单的网页做测试: /* ...

  3. JS常用公共方法封装

    _ooOoo_ o8888888o 88" . "88 (| -_- |) O\ = /O ____/`---'\____ .' \\| |// `. / \\||| : |||/ ...

  4. js常用API方法

    String对象常用的API:API指应用程序编程接口,实际上就是一些提前预设好的方法. charAt() 方法可返回指定位置的字符. stringObject.charAt(index) index ...

  5. js常用通用方法

    验证身份证详细方法 function isCardNo(pId) { var arrVerifyCode = [1, 0, "x", 9, 8, 7, 6, 5, 4, 3, 2] ...

  6. js常用共同方法

    var uh_rdsp = (function(){ //获取根目录 var getContextPath = function(){ var pathName = document.location ...

  7. 一些JS常用的方法

    /** * JS公用类库文件 */ (function(){ Tools = { W: window, D: document, Postfix: ".php", GetId: f ...

  8. Node.js 常用Mongoose方法

    Node.js 手册查询-Mongoose 方法 一.Schema 一种以文件形式存储的数据库模型骨架,无法直接通往数据库端,也就是说它不具备对数据库的操作能力.可以说是数据属性模型(传统意义的表结构 ...

  9. Node.js常用express方法

    Node.js 手册查询-Express 方法 1.send方法 send 方法向浏览器发送一个响应信息,并可以智能处理不同类型的数据 send方法在输出响应时会自动进行一些设置,比如HEAD信息.H ...

  10. JS常用属性方法大全

    1. 输出语句 : document.write(""); 2.JS 中的注释为 : // 3. 传统的 HTML 文档顺序是 : document->html->(h ...

随机推荐

  1. Android Studio打包:“APP_NAME" IS NOT TRANSLATED IN ZH, ZH_CN……..解决办法

    开始用Android Studio更新到2.0稳定版,调试的时候没啥问题,在打包的时候出现了"app_name" is not translated in zh, zh_CN….. ...

  2. 2017年最全的30个Android面试题,你将如何回答?

    百度首页 登录 2017年最全的30个Android面试题,你将如何回答? 机翼技术 百家号 03-10 02:32 “三金四银”又是一年一度的跳槽季,相信有不少Android程序员开始摩拳擦掌蠢蠢欲 ...

  3. RUEI 13.1.1版本在OEL 5.7上的安装

    准备工作 ntp的工作和同步 /sbin/chkconfig --list | grep ntpd ntpd 0:off 1:off 2:off 3:off 4:off 5:off 6:off /sb ...

  4. javascript快速入门21--DOM总结

    跨浏览器开发 市场上的浏览器种类多的不计其数,它们的解释引擎各不相同,期待所有浏览器都一致的支持JavaScript,CSS,DOM,那要等到不知什么时候,然而开发者不能干等着那天.历史上已经有不少方 ...

  5. struts2文件上传时获取上传文件的大小

    利用struts2框架上传文件时,如果想要获取上传文件的大小可以利用下面的方式进行: FileInputStream ins = new FileInputStream(file); if (ins. ...

  6. 实现一个Cglib代理Demo

    Cglib动态代理采用的是创建目标类的子类的方式.优点:不用实现额外接口,只操作我们关心类,高性能. package jesse.test; import java.lang.reflect.Meth ...

  7. 倍福TwinCAT(贝福Beckhoff)常见问题(FAQ)-如何设置PLC的扫描周期,运行周期

    双击PlcTask,然后再Cycle ticks中可以修改PLC的扫描周期,例如修改为2ms   为了验证是否真的是2ms,可以在程序中跟计数器绑定使用,PLC2ms扫描一次,计数器也是每个周期增加0 ...

  8. CentOS下安装实时检測网络带宽的小工具bmon

    首先下载rpmforge-release扩展的rpm包 32位操作系统:wget http://www.sudu.us/Tools/bmon/rpmforge-release-0.3.6-1.el5. ...

  9. EJB学习笔记之十(BMT事务和CMT事务)

     1.前言 前两篇博客主要介绍了与事务相关的知识.比如事务的一些特性,以及并发产生的问题.本篇来解说一下EJB中两种处理事务的方式.一种是以生命式方式来管理事务(CMT):还有一种则是在EJB内部使用 ...

  10. Python CODE——Nonblocking I/O client AND Delaying Server

    #!Nonblocking I/O - Chapter 5 -pollclient.py import socket,sys,select port=51423 host='localhost' sp ...