[JavaScript] Util方法

本文介绍了一种使用JavaScript实现精确数值运算的方法,包括除法、乘法、加法和减法,并提供了字符串长度计算和Map操作的实现。此外,还展示了如何通过AJAX获取服务器时间并进行格式化输出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数值计算

//除法函数,用来得到精确的除法结果
function accDiv(arg1,arg2){
    var t1=0,t2=0,r1,r2;
    try{t1=arg1.toString().split(".")[1].length;}catch(e){}
    try{t2=arg2.toString().split(".")[1].length;}catch(e){}
    with(Math){
        r1=Number(arg1.toString().replace(".",""));
        r2=Number(arg2.toString().replace(".",""));
        return (r1/r2)*pow(10,t2-t1);
    }
}
//乘法函数,用来得到精确的乘法结果
function accMul(arg1,arg2)
{
    var m=0,s1=arg1.toString(),s2=arg2.toString();
    try{m+=s1.split(".")[1].length;}catch(e){}
    try{m+=s2.split(".")[1].length;}catch(e){}
    return Number(s1.replace(".",""))*Number(s2.replace(".",""))/Math.pow(10,m);
}
//加法函数,用来得到精确的加法结果
function accAdd(arg1,arg2){
    var r1,r2,m;
    try{r1=arg1.toString().split(".")[1].length;}catch(e){r1=0;}
    try{r2=arg2.toString().split(".")[1].length;}catch(e){r2=0;}
    m=Math.pow(10,Math.max(r1,r2));
    return (arg1*m+arg2*m)/m;
}
//减法函数
function accSub(arg1,arg2){
     var r1,r2,m,n;
     try{r1=arg1.toString().split(".")[1].length;}catch(e){r1=0;}
     try{r2=arg2.toString().split(".")[1].length;}catch(e){r2=0;}
     m=Math.pow(10,Math.max(r1,r2));
     //last modify by deeka
     //动态控制精度长度
     n=(r1>=r2)?r1:r2;
     return ((arg2*m-arg1*m)/m).toFixed(n);
}

字符串

function dataLength(fData){ 
    var intLength=0;
    for (var i=0;i<fData.length;i++){ 
        if ((fData.charCodeAt(i) < 0) || (fData.charCodeAt(i) > 255)) 
            intLength=intLength+2; 
        else 
            intLength=intLength+1;   
    } 
    return intLength;
} 

一个Map

<pre class="javascript" name="code">function Map() {
    this.elements = new Array();

    //获取MAP元素个数
    this.size = function() {
        return this.elements.length;
    };
    //判断MAP是否为空
    this.isEmpty = function() {
        return (this.elements.length < 1);
    };
    //删除MAP所有元素
    this.clear = function() {
        this.elements = new Array();
    };
    //向MAP中增加元素(key, value) 
    this.put = function(_key, _value) {
	for (i = 0; i < this.elements.length; i++) {
            if (this.elements[i].key == _key) {
             this.elements[i].value = _value;
             return ;
            }
        }
        this.elements.push( {
            key : _key,
            value : _value
        });
    };
    //删除指定KEY的元素,成功返回True,失败返回False
    this.remove = function(_key) {
        var bln = false;
        try {
            for (i = 0; i < this.elements.length; i++) {
                if (this.elements[i].key == _key) {
                    this.elements.splice(i, 1);
                    return true;
                }
            }
        } catch (e) {
            bln = false;
        }
        return bln;
    };
    //获取指定KEY的元素值VALUE,失败返回NULL
    this.get = function(_key) {
        try {
            for (i = 0; i < this.elements.length; i++) {
                if (this.elements[i].key == _key) {
                    return this.elements[i].value;
                }
            }
        } catch (e) {
            return null;
        }
    };
    //获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL
    this.element = function(_index) {
        if (_index < 0 || _index >= this.elements.length) {
            return null;
        }
        return this.elements[_index];
    };
    //判断MAP中是否含有指定KEY的元素
    this.containsKey = function(_key) {
        var bln = false;
        try {
            for (i = 0; i < this.elements.length; i++) {
                if (this.elements[i].key == _key) {
                    bln = true;
                }
            }
        } catch (e) {
            bln = false;
        }
        return bln;
    };
    //判断MAP中是否含有指定VALUE的元素
    this.containsValue = function(_value) {
        var bln = false;
        try {
            for (i = 0; i < this.elements.length; i++) {
                if (this.elements[i].value == _value) {
                    bln = true;
                }
            }
        } catch (e) {
            bln = false;
        }
        return bln;
    };
    //获取MAP中所有VALUE的数组(ARRAY)
    this.values = function() {
        var arr = new Array();
        for (i = 0; i < this.elements.length; i++) {
            arr.push(this.elements[i].value);
        }
        return arr;
    };
    //获取MAP中所有KEY的数组(ARRAY)
    this.keys = function() {
        var arr = new Array();
        for (i = 0; i < this.elements.length; i++) {
            arr.push(this.elements[i].key);
        }
        return arr;
    };
}

获取服务器时间

function getServerSysTime(){
	$.ajax({
	    type: 'HEAD', // 获取头信息,type=HEAD即可
	    url : window.location.href,
	    complete: function( xhr,data ){
	        // 获取相关Http Response header
	        var wpoInfo = {
	            "date" : xhr.getResponseHeader('Date'),// 服务器端时间
	            "contentEncoding" : xhr.getResponseHeader('Content-Encoding'),// 服务器端时间
	            "connection" : xhr.getResponseHeader('Connection'),// keep-alive ? close?
	            "contentLength" : xhr.getResponseHeader('Content-Length'),// 响应长度
	            "server" : xhr.getResponseHeader('Server'),// 服务器类型,apache?lighttpd?
	            "vary" : xhr.getResponseHeader('Vary'),
	            "transferEncoding" : xhr.getResponseHeader('Transfer-Encoding'),
	            "contentType" : xhr.getResponseHeader('Content-Type'),// text/html ? text/xml?
	            "cacheControl" : xhr.getResponseHeader('Cache-Control'),
	            "exprires" : xhr.getResponseHeader('Exprires'), // 生命周期?
	            "lastModified" : xhr.getResponseHeader('Last-Modified')
	        };
	        // 对服务器时间格式化
	        var date = new Date(xhr.getResponseHeader('Date'));
		var mon = date.getMonth();
		mon=mon+1;
		var day = date.getDate();
		if(mon<10){
			mon="0"+mon;
		}else{
		    mon=""+mon;
		}
		if(day<10){
			day="0"+day;
		}else{
		    day=""+day;
		}
		alert( date.getFullYear()+'-'+mon+'-'+day+' '+date.toLocaleTimeString());
	    }
	});
}

js调用下载

function download(filePath){
	//filePath为项目WebRoot下文件路径 如 test/test.zip;
	var url="<%=request.getContextPath()%>"+"/"+filePath;
	try{ 
		var elemIF = document.createElement("iframe");   
		elemIF.src = url;   
		elemIF.style.display = "none";   
		document.body.appendChild(elemIF);   
	}catch(e){ 
		alert("失败!");
	} 
}


正则表达式

价格:var reg = /(^[1-9]([0-9]+)?(\.[0-9]{1,2})?$)|(^(0){1}$)|(^[0-9]\.[0-9]([0-9])?$)/;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值