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而言,它 ...
随机推荐
- 检查Windows上安装的.net版本
cmd reg query "HKLM\Software\Microsoft\NET Framework Setup\NDP" /s /v version | findstr /i ...
- docker 镜像创建
dockerfile FROM microsoft/aspnetcore:2.0 ARG source WORKDIR /app EXPOSE COPY ${source:-/} . ENTRYPOI ...
- c++实现多叉树树形显示(适合家谱的显示)
多叉树(左兄弟右孩子二叉树)的树形显示 核心代码 void positionadd(Multiway_tree*root, int n) { if (!root)return; Multiway_tr ...
- Delphi XE8中开发DataSnap程序常见问题和解决方法 (-)启动创建好的DBExpress工程时候报错了!
当我们成功创建了使用DBExpress的DataSnap的服务器和客户端程序后,我们关闭了当前工程,当我们再次打开时候,有可能会出现这样的问题: 问题原因:这个问题是因为当前工程组默认启动的是客户端工 ...
- 第七篇 Python面向对象
类是对一群具有相同特征或者行为的事物的一个统称,是抽象的,不能直接使用,特征被称为属性,行为被称为方法,类就相当于制造飞机时的图纸,是一个模板,是负责创建对象的. 对象是由类创建出来的一个具体存在,可 ...
- 查看进程的pid和ppid
用个栗子来说明吧from multiprocessing import Processimport time,os def task(): print('%s is running ,parents ...
- day08.4-samba共享网盘服务
1. 安装软件:yum install samba -y 2. 新建共享目录物理路径:mkdir /zizaijiapu 修改配置文件:vim /etc/samba/smb.con ...
- ajax-2
serialize()输出序列化表单值的结果: 如: <html> <head> <script type="text/javascript" src ...
- python-flask之request的属性
flask的request模块的属性(参考) #代码示例,仅仅是为了测试request的属性值 @app.route('/login', methods = ['GET','POST']) def l ...
- luoguP4234 最小差值生成树
https://www.luogu.org/problemnew/show/P4234 按照边的权值从小到大排序,依次加入,并删除能够删除的权值最小的一条边,用 set 维护当前所有边的边权,并查集维 ...