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(下载的公共的)的更多相关文章

  1. 人工智能大数据,公开的海量数据集下载,ImageNet数据集下载,数据挖掘机器学习数据集下载

    人工智能大数据,公开的海量数据集下载,ImageNet数据集下载,数据挖掘机器学习数据集下载 ImageNet挑战赛中超越人类的计算机视觉系统微软亚洲研究院视觉计算组基于深度卷积神经网络(CNN)的计 ...

  2. Javascript使用function创建类的两种方法

    1.使用function类 //myFunction.js var CMyFunc=function() { //类的公共方法,供外部调用 this.Func1=function() { var i= ...

  3. 去除下载电影和电视剧文件名中的多余字符[python实现]

    讨厌下载电影和电视剧文件名中的多余字符(如网址和广告字样),,搞得文件名好长,可以使用下面的Python代码,自行修改即可. #!\usr\bin\env python # -*- coding: u ...

  4. Thinkphp3.2.3框架下封装公共的函数,例如封装CURL函数来获取接口数据

    当我们需要在控制层调用相同的封装函数时,写多次相同的函数,显得代码十分的拉杂,不精简: TP框架有一个很好的机制,可以再Common定义一个function.php函数,当我们在控制层调用的时候直接调 ...

  5. nodejs之SVG转图片下载方案

    本文介绍在nodejs基础上.怎样实现将svg转为png并下载的功能. 所需Webkit和node module简单介绍: phantomjs:一个基于WebKit的server端JavaScript ...

  6. ajax axios 下载文件时如何获取进度条 process

    最近项目需要做一个下载文件的进度条,看网上上传文件进度条下载,特分享出来方便大家查阅 <!DOCTYPE html> <html> <head>     <m ...

  7. 痞子衡嵌入式:RT-UFL - 一个适用全平台i.MXRT的超级下载算法设计

    大家好,我是痞子衡,是正经搞技术的痞子.今天给大家带来的是痞子衡的开源项目 RT-UFL. 痞子衡在近两年多的i.MXRT客户项目支持过程中,遇到的一个相当高频的问题就是制作i.MXRT下载算法.我们 ...

  8. php导出excel封装类

    因为实际情况的需要,导出excel表格在后台开发的过程中会经常用到.下面是我在实际应用中自己整理的一个导出excel类,需要PHPExcel支持,本类很好的完成导出表格的基本样式,保存路径,切换工作薄 ...

  9. 【原创】ui.router源码解析

    Angular系列文章之angular路由 路由(route),几乎所有的MVC(VM)框架都应该具有的特性,因为它是前端构建单页面应用(SPA)必不可少的组成部分. 那么,对于angular而言,它 ...

随机推荐

  1. MongoDB整理笔记の安装及配置

    1.官网下载 地址:http://www.mongodb.org/downloads mongodb-linux-x86_64-2.4.9.tgz (目前为止,64位最新版本) 2.解压 切换到下载目 ...

  2. 关于 XML 字段内容查询

    找到个总结相当好的知识点的归纳,记在自己的博客里也方便查询 /* sql xml 入门:     --by jinjazz     --http://blog.csdn.net/jinjazz     ...

  3. JS和JQuery的比较

    一. Jquery它是javascript的一个轻量级框架,是对javascript进行封装. 二.JQuery和JS都有加载函数,但表达方式不同. 1.JS中的加载函数: //整个文档加载完毕后执行 ...

  4. MVN package install error javac: invalid target release: 1.8

    现象:---------------------------------[ERROR] Failure executing javac, but could not parse the error:j ...

  5. 1442: Neo 的简单字符串(字符串)

    1442: Neo 的简单字符串 时间限制: 10 Sec 内存限制: 128 MB 提交: 9 解决: 3 统计 题目描述 Neo 给你一系列字符串,请你输出字符串中的不同单词个数以及总单词个数. ...

  6. spring boot 第一个Dome

    1.创建Maven项目 按照下面的步骤 项目创建完成后的目录结构 2. 参照Spring boot官方文档修改pom.xml 修改 maven编译的jdk版本 将spring boot设置为 pare ...

  7. loj #2510. 「AHOI / HNOI2018」道路

    #2510. 「AHOI / HNOI2018」道路 题目描述 W 国的交通呈一棵树的形状.W 国一共有 n−1 个城市和 nnn 个乡村,其中城市从 111 到 n−1 编号,乡村从 111 到 n ...

  8. 如果将markdown视作一门编程语言可以做哪些有趣的事情?

    如题,然后就有了为解决这个好奇而开的项目:https://github.com/racaljk/llmd 源码主要是parser+interpreter,其中parser使用sundown,然后生成l ...

  9. 图像金字塔、高斯金字塔、差分金字塔(DOG金字塔)、尺度空间、DoG (Difference of Gaussian)角点检测

    [图像金字塔] 图像金字塔是一种以多分辨率来解释图像的结构,通过对原始图像进行多尺度像素采样的方式,生成N个不同分辨率的图像.把具有最高级别分辨率的图像放在底部,以金字塔形状排列,往上是一系列像素(尺 ...

  10. phpstorm利用database连接mysql数据库

    首先声明一点,database只能连接一个已存在的数据库,不能创建数据库 连接一个已存在的数据库步骤: 1,找到database:连续点击俩次shift,输入database就能找到了 2,点击绿色的 ...