pulic——function(下载的公共的)
1.
/*
* 用途: 对Date的扩展,将 Date 转化为指定格式的String
*/ // 月(M)、日(d)、小时(h)、分(m)、秒(s)、季度(q) 可以用 1-2 个占位符,
// 年(y)可以用 1-4 个占位符,毫秒(S)只能用 1 个占位符(是 1-3 位的数字)
// 例子:
// (new Date()).Format("yyyy-MM-dd hh:mm:ss.S") ==> 2006-07-02 08:09:04.423
// (new Date()).Format("yyyy-M-d h:m:s.S") ==> 2006-7-2 8:9:4.18
Date.prototype.format = function(fmt)
{ //author: meizz
var o = {
"M+" : this.getMonth()+1, //月份
"d+" : this.getDate(), //日
"h+" : this.getHours(), //小时
"m+" : this.getMinutes(), //分
"s+" : this.getSeconds(), //秒
"q+" : Math.floor((this.getMonth()+3)/3), //季度
"S" : this.getMilliseconds() //毫秒
};
if(/(y+)/.test(fmt))
fmt=fmt.replace(RegExp.$1, (this.getFullYear()+"").substr(4 - RegExp.$1.length));
for(var k in o)
if(new RegExp("("+ k +")").test(fmt))
fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
return fmt;
}
//使用方法
var now = new Date();
var nowStr = now.format("yyyy-MM-dd hh:mm:ss");
//使用方法2:
var testDate = new Date();
var testStr = testDate.format("YYYY年MM月dd日hh小时mm分ss秒");
alert(testStr);
//示例:
alert(new Date().format("yyyy年MM月dd日"));
alert(new Date().format("MM/dd/yyyy"));
alert(new Date().format("yyyyMMdd"));
alert(new Date().format("yyyy-MM-dd hh:mm:ss")); /*
* 数组去除重复项
*/
Array.prototype.unique5 = function()
{
var res = [], hash = {};
for ( var i = 0, elem; (elem = this[i]) != null; i++)
{
if (!hash[elem])
{
res.push(elem);
hash[elem] = true;
}
}
return res;
}; /*
* 用途:去除左右空格
*/
String.prototype.Trim = function()
{
return this.replace(/(^\s*)|(\s*$)/g, "");
};
/*
*读取文件的前后缀名
*/
String.prototype.startWith=function(str){
var reg=new RegExp("^"+str);
return reg.test(this);
} String.prototype.endWith=function(str){
var reg=new RegExp(str+"$");
return reg.test(this);
} eg:
var str=config.mou;
console.log(str.endWith=='.mou');//true
/*
*获取url中的参数
*/
function getUrlParam(name) {
var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //构造一个含有目标参数的正则表达式对象
var r = window.location.search.substr(1).match(reg); //匹配目标参数
if (r != null) return unescape(r[2]); return null; //返回参数值
}
//调用
var sDate=!!getUrlParam("date")?getUrlParam("date"):'';
/**
* @desc 根据公式获取code
* @param {string} str 公式字符串
* @return {array} _arr code组成的数组
*/
function formulaToCode(str){
var _arr=str.match(/\[.+?\]/g).join('').replace(/\]/g,'').split(/\[/);
_arr.shift();
return _arr;
}
/**
* @desc 把请求到的单个code分散数据重新组合成按照公式的数据。
* @param {Object} obj 用 “公式:设备对象”组成的对象。
* @param {Array} res 请求回来的数据数组对象,如:res.jsonList
* @return {Array} resArr 数据数组对象
*/
function evalFormulaToRes(obj,res,other){
other=other===undefined?['sname','data']:other;
var resArr=[];//用于存放返回的数据对象
if(res.length==0){return resArr;}//没有数据
//1.解析res数组生成_tempO和_tempA
for(var i=0,_tempO={},_tempA={};i<res.length;i++){
if(_tempO[res[i].sname]===undefined){
_tempO[res[i].sname]={};
_tempA[res[i].sname]=[];
}
var keys='';
for(var k in res[i]){
if(other.indexOf(k)===-1){
keys+=''+res[i][k];
}
}
if(keys===''){keys='tempIndex'+i}
_tempO[res[i].sname][keys]=res[i];
_tempA[res[i].sname].push(res[i]);
}
//2.外层循环每个公式
for(var k in obj){
if(k.split(/[\[\+\-\*\/]/g).length<3){//2.1.如果公式是单个code,不存在运算直接concat进resArr
var key=k.replace(/\[|\]/g,'');
if(_tempA[k]!==undefined){
resArr=resArr.concat(_tempA[k]);
}else if(_tempA[key]!==undefined){
resArr=resArr.concat(_tempA[key]);
}
}else{//2.2.公式存在运算
//2.2.1.取出每个code
var _arr=formulaToCode(k);
//2.2.2.根据每个code找出数据对象,把找到的数据对象的所有属性tempResArr
if(_arr.length>1){
for(var i=0,tempResArr={},len=0;i<_arr.length;i++){
if(_tempO[_arr[i]]!==undefined){
for(var n in _tempO[_arr[i]]){
tempResArr[n]=_tempO[_arr[i]][n];
}
}
}
}
console.log(tempResArr)
//2.2.3.循环tempResArr找出里面,每个属性生成变量
for(var ks in tempResArr){
var to=JSON.parse(JSON.stringify(tempResArr[ks]))
to.sname=k;to.data=formulaToData(_arr,_tempO,k,ks);
if(isNaN(to.data)||to.data==Infinity){
console.error('错误:"'+k+'"数据除以0');
to.data=0;
}
resArr.push(to);
}
}
}
return resArr;
}
/**
* @desc 将公式转换为数据
* @param {*} _arr
* @param {*} _tempO
* @param {*} k
* @param {*} ks
*/
function formulaToData(_arr,_tempO,k,ks){
for(var i=0;i<_arr.length;i++){
var _str='';
if(_tempO[_arr[i]]===undefined){//没有code
_str='var '+_arr[i]+'='+0;
}else{
var _to=_tempO[_arr[i]][ks];//有code没有某个属性
if(_to===undefined){
_str='var '+_arr[i]+'='+0;
}else{
_str='var '+_arr[i]+'='+_to.data;
}
}
eval(_str);
}
return eval('('+k.replace(/\[|\]/g,'')+')')+'';
}
/**
* @desc 替换所有的js方法
*/
String.prototype.replaceAll = stringReplaceAll;
function stringReplaceAll(AFindText,ARepText){
var raRegExp = new RegExp(AFindText.replace(/([\(\)\[\]\{\}\^\$\+\-\*\?\.\"\'\|\/\\])/g,"\\$1"),"ig");
return this.replace(raRegExp,ARepText);
}
pulic——function(下载的公共的)的更多相关文章
- 人工智能大数据,公开的海量数据集下载,ImageNet数据集下载,数据挖掘机器学习数据集下载
人工智能大数据,公开的海量数据集下载,ImageNet数据集下载,数据挖掘机器学习数据集下载 ImageNet挑战赛中超越人类的计算机视觉系统微软亚洲研究院视觉计算组基于深度卷积神经网络(CNN)的计 ...
- Javascript使用function创建类的两种方法
1.使用function类 //myFunction.js var CMyFunc=function() { //类的公共方法,供外部调用 this.Func1=function() { var i= ...
- 去除下载电影和电视剧文件名中的多余字符[python实现]
讨厌下载电影和电视剧文件名中的多余字符(如网址和广告字样),,搞得文件名好长,可以使用下面的Python代码,自行修改即可. #!\usr\bin\env python # -*- coding: u ...
- Thinkphp3.2.3框架下封装公共的函数,例如封装CURL函数来获取接口数据
当我们需要在控制层调用相同的封装函数时,写多次相同的函数,显得代码十分的拉杂,不精简: TP框架有一个很好的机制,可以再Common定义一个function.php函数,当我们在控制层调用的时候直接调 ...
- nodejs之SVG转图片下载方案
本文介绍在nodejs基础上.怎样实现将svg转为png并下载的功能. 所需Webkit和node module简单介绍: phantomjs:一个基于WebKit的server端JavaScript ...
- ajax axios 下载文件时如何获取进度条 process
最近项目需要做一个下载文件的进度条,看网上上传文件进度条下载,特分享出来方便大家查阅 <!DOCTYPE html> <html> <head> <m ...
- 痞子衡嵌入式:RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计
大家好,我是痞子衡,是正经搞技术的痞子.今天给大家带来的是痞子衡的开源项目 RT-UFL. 痞子衡在近两年多的i.MXRT客户项目支持过程中,遇到的一个相当高频的问题就是制作i.MXRT下载算法.我们 ...
- php导出excel封装类
因为实际情况的需要,导出excel表格在后台开发的过程中会经常用到.下面是我在实际应用中自己整理的一个导出excel类,需要PHPExcel支持,本类很好的完成导出表格的基本样式,保存路径,切换工作薄 ...
- 【原创】ui.router源码解析
Angular系列文章之angular路由 路由(route),几乎所有的MVC(VM)框架都应该具有的特性,因为它是前端构建单页面应用(SPA)必不可少的组成部分. 那么,对于angular而言,它 ...
随机推荐
- 【留用】C#的一些好的书籍
浏览博客的时候发现一篇推荐的C#书籍,感觉真的不错,涉略过几本,水平问题,没看的很深入,正在努力,留用了!!! http://www.cnblogs.com/tongming/p/3879752.ht ...
- utf-8是否带签名 乱码问题。
Encoding utf8 = new UTF8Encoding(true); 参数表示是否带签名, 但此是否带签名在WriteAllBytes 无效,生成的永远是无签名的. 但在WriteAllTe ...
- sqlServer2008技术内幕笔记总结(实用的sql方法总结)
over函数的使用: 1.可以实现基于什么求和,省去group by: select xingming,xingbie,COUNT(*) over() as '总人数' from jbxx_xuesh ...
- WPF 控件库——仿制Chrome的ColorPicker
WPF 控件库系列博文地址: WPF 控件库——仿制Chrome的ColorPicker WPF 控件库——仿制Windows10的进度条 WPF 控件库——轮播控件 WPF 控件库——带有惯性的Sc ...
- mvc+EF - 有用文章
Mvc全局过滤器与Action排除:http://blog.csdn.net/shuaihj/article/details/53020428 MVC 自定义AuthorizeAttribute实现权 ...
- .Net Core 项目引用本地类库方式(一)
最近了解到.NET Core 项目,引用本地类库DLL的方式有三种 1.非同解决方案下的引用,直接引用,浏览,找到对应的DLL,然后确定引用. 这种方式有个不好的地方就是,如果引用的DLL文件里面,也 ...
- IDEA下载与安装
IntelliJ IDEA号称当前Java开发效率最高的IDE工具. IntelliJ IDEA有两个版本:社区版(Community)和旗舰版(Ultimate). 社区版 是免费的.开源的,但功能 ...
- April Fools Day Contest 2019 A. Thanos Sort
A. Thanos Sort time limit per test 1 second memory limit per test 256 megabytes input standard input ...
- 【bzoj3309】DZY Loves Math 莫比乌斯反演+线性筛
Description 对于正整数n,定义f(n)为n所含质因子的最大幂指数.例如f(1960)=f(2^3 * 5^1 * 7^2)=3, f(10007)=1, f(1)=0. 给定正整数a,b, ...
- luoguP3648 [APIO2014]序列分割
https://www.luogu.org/problemnew/show/P3648 同bzoj3675 这题斜率优化+滚动数组就可以了qwq 因为我是在飞机上瞎bb的式子,所以可能会和别的题解的式 ...