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); 
} 

 

posted @ 2017-08-21 09:50  人在路途  阅读(343)  评论(0编辑  收藏  举报