项目中常见的公用函数

248 阅读2分钟

平常工作项目中可能会遇到一些公用的函数,我对我遇到的进行一下总结,后续遇到了再不定期进行更新.

1.获取url中的参数

url的参数可能以/分割,也可能以?分割,所以这里对这两种情况做一兼容.

function getQueryString(variable,num){
    var temp = window.location.href;
    //问号,variable为传入的参数名
    if(variable && temp.indexOf('?')>=0){
        var query = window.location.search.substring(1);
        var vars = query.split("&");
        for (var i=0;i<vars.length;i++) {
            var pair = vars[i].split("=");
            if(pair[0] == variable){return pair[1];}
        }
        return(false);
    }else if(!variable && num && temp.indexOf('/')>=0){
        //斜杠分割的情况,num表示url中参数的个数,这里默认参数都是在url结尾,若是在中间在想办法处理
        var tempArray = temp.split('/');
        if(tempArray && tempArray.length >= 1) {
            tempArray=tempArray.slice(-num)
            for(var i=0;i<tempArray.length;i++){
                //去除冒号
                if(tempArray[i][0]===':'){
                    tempArray[i]=tempArray[i].substring(1);
                }
            }
            return tempArray;
        }else{
            return [];
        }
    }else{
        throw new Error('方法调用错误')
    }
}

更常见的简单的情况:以/分割,且只有一个参数,返回一个字符串:

function getQueryString(){
    var temp = window.location.href;
    var tempArray = temp.split('/');
    if(tempArray && tempArray.length >= 1) {
        var tempString = tempArray[tempArray.length - 1];
        if(tempString[0]===':') tempString=tempString.substring(1);
        return tempString;
    }else {
        return '';
    }
}
2.数组去重
function unique(arr) {
    var result = [], hash = {};
    for (var i = 0, elem; (elem = arr[i]) != null; i++) {
        if (!hash[elem]) {
            result.push(elem);
            hash[elem] = true;
        }
    }
    return result;
}
3.对象数组去重
function handleRepeat(arr,prop) {
    for(var i=0,arrLen=arr.length;i<arrLen;i++){
        for(var j=i+1;j<arrLen;j++){
            if(arr[j][prop]===arr[i][prop]){
                arr.splice(j,1);
                j--;
                arrLen--;
                continue;
            }
        }
    }
    return arr;
}
4.对象数组排序
function sortBy(property) {
    return function(a,b) {
        return a[property] - b[property];
    }
}
5.获取上传的文件大小(以jquery为例,vue和react先获取dom元素)
function getFileSize(id){
    var maxSize=64;
    var target=$("#"+id)[0].files[0];
    var fileSize = target.size/(1024*1024);
    if(fileSize>64){
        alert("上传单个文件大小不能超过64MB!");
        return false;
    }
}
6.格式化日期
//传入时间戳
function getLocalTime(nS) {
    var now = new Date(nS);
    if(!now){
        return 0;
    }else{
        var year=now.getFullYear();//年
        var month=now.getMonth()+1;//月
        var date=now.getDate();//日
        var hour=now.getHours();//时
        var minute=now.getMinutes();//分
        var second=now.getSeconds();//秒
        return year+"-"+month+"-"+date +' '+hour+':'+minute+':'+second;
    }
 }