js常用方法集合

1.数组去重

// 思路:获取没重复的最右一值放入新数组
    /*
    * 推荐的方法
    *
    * 方法的实现代码相当酷炫,
    * 实现思路:获取没重复的最右一值放入新数组。
    * (检测到有重复值时终止当前循环同时进入顶层循环的下一轮判断)*/
    function uniq(array){
        var temp = [];
        var index = [];
        var l = array.length;
        for(var i = 0; i < l; i++) {
            for(var j = i + 1; j < l; j++){
                if (array[i] === array[j]){
                    i++;
                    j = i;
                }
            }
            temp.push(array[i]);
            index.push(i);
        }
        console.log(index);
        return temp;
    }

2.常用很正则校验

//校验输入内容
    function clearNoNum(obj) {
        //先把非数字的都替换掉,除了数字和.
        obj.value = obj.value.replace(/[^\d.]/g, "");
        //保证只有出现一个.而没有多个.
        obj.value = obj.value.replace(/\.{2,}/g, ".");
        //必须保证第一个为数字而不是.
        obj.value = obj.value.replace(/^\./g, "");
        //保证.只出现一次,而不能出现两次以上
        obj.value = obj.value.replace(".", "$#$").replace(/\./g, "").replace("$#$", ".");
        //只能输入两个小数
        obj.value = obj.value.replace(/^(\-)*(\d+)\.(\d\d).*$/, '$1$2.$3');
		//只能输入0~100
        obj.value = onj.value.replace(/^((?!0)\d{1,2}|100)$/,"");
    }

3.将long形式的时间转化为格式化日期

//前台获取后台后台传来的日期格式会自动转化为long数字类型,需要在前台对数字类型进行格式化
//模板代码   仅供参考
Date.prototype.format = function(f){
    var o ={
        "M+" : this.getMonth()+1, //month
        "d+" : this.getDate(),    //day
        "h+" : this.getHours(),   //hour
        "m+" : this.getMinutes(), //minute
        "s+" : this.getSeconds(), //second
        "q+" : Math.floor((this.getMonth()+3) /3),  //quarter
        "S" : this.getMilliseconds() //millisecond
    }
    if(/(y+)/.test(f))f=f.replace(RegExp.$1,(this.getFullYear()+"").substr(4 - RegExp.$1.length));
    for(var k in o)
        if(new RegExp("("+ k +")").test(f))f = f.replace(RegExp.$1,RegExp.$1.length==1 ? o[k] : ("00"+ o[k]).substr((""+ o[k]).length));return f
}

var t=1347497754133;
var d=  new Date();
d.setTime(t);
var s=d.format('yyyy-MM-dd hh:mm:ss');
alert(s);

4.后台对json特殊符号的转义

/**
     * 转换特殊字符,将json串转换为JS能直接识别的json
	 * json中如果含有单引号  或者特殊字符,前台json.parse()函数在解析时会报错
	 * 因此需要在后台进行转义
     * @param oldJson
     * @return
     */
    public static String getJsonForJS(String oldJson) {
        String newJson = oldJson;
        newJson = newJson.replaceAll("\\\\", "\\\\\\\\");
        newJson = newJson.replaceAll("\\'", "\\\\'");
        newJson = newJson.replaceAll("\\\"", "\\\\\"");
        return newJson;
    }

5.js兼容性的页面关闭方式

//新版本谷歌和火狐的兼容性关闭方法
//场景:如果存在父页面window.close()有效
//如果没有父页面直接window.close()就会出现Scripts may close only the windows that were opened by it.导致页面点击无反应
function cancle() {
	var userAgent = navigator.userAgent;
	if (userAgent.indexOf("Firefox") != -1 || userAgent.indexOf("Chrome") != -1) {
		if(window.opener == null) {
			window.location.href = "about:blank";
		} else {
			window.close();
		}
	} else {
		window.opener = null;
		window.open("", "_self");
		window.close();
	}
}

6.my97datapicker日期间隔设置

//最好使用WdatePicker提供的表达式去计算,自行计算然后使用字符串设置回出现问题
//时间间隔控制在30天之间
WdatePicker({
        readOnly: 'true',
        dateFmt: 'yyyy-MM-dd',
        onclearing: function () {
            showAlert("日期必须被选择。");
            return true;
        },
        maxDate: '#F{$dp.$D(\'endTime\')}',
        minDate: '#F{$dp.$D(\'endTime\',{d:-29})}'
    })
WdatePicker({
        readOnly: 'true',
        dateFmt: 'yyyy-MM-dd',
        onclearing: function () {
            showAlert("日期必须被选择。");
            return true;
        },
        minDate: '#F{$dp.$D(\'startTime\')}',
        maxDate: '#F{$dp.$D(\'startTime\',{d:29})}'
    })
//月份间隔控制在11个月之间
WdatePicker({
        readOnly: 'true',
        dateFmt: 'yyyy-MM',
        onclearing: function () {
            showAlert("日期必须被选择。");
            return true;
        },
        maxDate: '#F{$dp.$D(\'endTime\')}',
        minDate: '#F{$dp.$D(\'endTime\',{d:-11})}'
    })
WdatePicker({
        readOnly: 'true',
        dateFmt: 'yyyy-MM',
        onclearing: function () {
            showAlert("日期必须被选择。");
            return true;
        },
        minDate: '#F{$dp.$D(\'startTime\')}',
        maxDate: '#F{$dp.$D(\'startTime\',{d:11})}'
    })

7.虚拟机设置

-server -XX:PermSize=128M -XX:MaxPermSize=128M

8.js判断数组中是否有重复数据

function isRepeat(arr) {
  var hash = {};
  for(var i in arr) {
    if(hash[arr[i]]) {
      return true;
    }
    hash[arr[i]] = true;
  }
  return false;
}

 

 

posted @ 2019-09-20 11:58  莫等、闲  阅读(569)  评论(0编辑  收藏  举报