封装模板

/**
 * Created by Eden on 2017/4/15.
 */

var Common = {
    temp: {
        mask: '<div class="mask divMask"></div>',
        formAlert: '<div class="poup divPoup"><div class="poup-alert tran">{{msg}}</div></div>',
        loading: '<div class="pageLoading"><img src="Content/images/loading.gif"></div>'
    },
    data: {
        role: ["require", "email", "idcard", "mobile"],
        formAlertTime: null
    },
    showFormAlert: function (bool, msg) {
        $(".divPoup").remove();
        if (Common.data.formAlertTime) {
            window.clearInterval(Common.data.formAlertTime);
            Common.data.formAlertTime = null;
        }
        if (bool) {
            $("body").append(Mustache.to_html(Common.temp.formAlert, {msg: msg}));
            Common.data.formAlertTime = setTimeout(function () {
                Common.showFormAlert(false);
            }, 2000);
        }
    },
    formatDate: function (time, fmt) {
        var o = {
            "M+": time.getMonth() + 1, //月份
            "d+": time.getDate(), //日
            "h+": time.getHours(), //小时
            "m+": time.getMinutes(), //分
            "s+": time.getSeconds(), //秒
            "q+": Math.floor((time.getMonth() + 3) / 3), //季度
            "S": time.getMilliseconds() //毫秒
        };
        if (/(y+)/.test(fmt)) fmt = fmt.replace(RegExp.$1, (time.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;
    },
    getDaybyUnit: function (str) {
        var day = 1;
        switch (str) {
            case "年":
                day = 365;
                break;
            case "季":
                day = 90;
                break;
            case "月":
                day = 30;
                break;
            case "日":
                day = 1;
                break;
        }
        return day;
    },
    getTypebyUnit: function (str) {
        var type = 'days';
        switch (str) {
            case "年":
                type = 'years';
                break;
            case "季":
                type = 'quarters';
                break;
            case "月":
                type = 'months';
                break;
            case "日":
                type = 'days';
                break;
        }
        return type;
    },
    showMask: function (bool, func) {
        if (bool) {
            $("body").append(Common.temp.mask);
            func && $(".divMask").click(function () {
                $(".divMask").remove(), func();
            })
        } else $(".divMask").remove();
    },
    serviceMask: function(bool,func) {
        if (bool) {
            $("body").append(Common.temp.mask);
            func && $(".divMask").on('click touchstart', function () {
                $(".divMask").remove(), func();
            })
        } else $(".divMask").remove();
    },
    checkMobile: function (obj) {
        if (/^1(3|4|5|7|8)\d{9}$/.test(obj))
            return true;
        else
            return false;
    },
    checkIdcard: function (code) {
        var city = {
            11: "北京",
            12: "天津",
            13: "河北",
            14: "山西",
            15: "内蒙古",
            21: "辽宁",
            22: "吉林",
            23: "黑龙江 ",
            31: "上海",
            32: "江苏",
            33: "浙江",
            34: "安徽",
            35: "福建",
            36: "江西",
            37: "山东",
            41: "河南",
            42: "湖北 ",
            43: "湖南",
            44: "广东",
            45: "广西",
            46: "海南",
            50: "重庆",
            51: "四川",
            52: "贵州",
            53: "云南",
            54: "西藏 ",
            61: "陕西",
            62: "甘肃",
            63: "青海",
            64: "宁夏",
            65: "新疆",
            71: "台湾",
            81: "香港",
            82: "澳门",
            91: "国外 "
        };
        var tip = "";
        var pass = true;
        var isNumber =  /^[0-9]+.?[0-9]*$/;

        if(code.length >0 && !isNumber.test(code.substr(-1))){
            var lastCode = (code.substr(-1)).toUpperCase();
            if(code.length == 15){
                code = code.substr(0,14);
                code += lastCode;
            }else if(code.length == 18){
                code = code.substr(0,17);
                code += lastCode;
            }
        }
        if (!code || !/^(\d{15}$|^\d{18}$|^\d{17}(\d|X|x))$/.test(code)) {
            tip = "身份证号格式错误";
            pass = false;
        }

        else if (!city[code.substr(0, 2)]) {
            tip = "地址编码错误";
            pass = false;
        }
        else {
            //18位身份证需要验证最后一位校验位
            if (code.length == 18) {
                code = code.split('');
                //∑(ai×Wi)(mod 11)
                //加权因子
                var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2];
                //校验位
                var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2];
                var sum = 0;
                var ai = 0;
                var wi = 0;
                for (var i = 0; i < 17; i++) {
                    ai = code[i];
                    wi = factor[i];
                    sum += ai * wi;
                }
                var last = parity[sum % 11];
                if (parity[sum % 11] != code[17]) {
                    tip = "校验位错误";
                    pass = false;
                }
            }
        }
        return pass;
    },
    getQueryString: function (name) {
        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
        var r = window.location.search.substr(1).match(reg);
        if (r != null) return unescape(r[2]);
        return null;
    },
    request: function (url, data, call, type) {
        return $.ajax({
            url: CONFIG.BASEURL + url,
            data: JSON.stringify(data),
            type: type ? type : "post",
            dataType: "json",
            contentType: "multipart/form-data",
            success: function (data) {
                call && call(data);
            }
        })
    },
    otherRequest: function (url, data, call, type) {
        return $.ajax({
            url: url,
            data: JSON.stringify(data),
            type: type ? type : 'post',
            dateType: 'json',
            contentType: "application/json",
            success: function (data) {
                call && call(data);
            }
        })
    },
    addNum: function (num1, num2) {
        var baseNum, baseNum1, baseNum2;
        try {
            baseNum1 = num1.toString().split(".")[1].length;
        } catch (e) {
            baseNum1 = 0;
        }
        try {
            baseNum2 = num2.toString().split(".")[1].length;
        } catch (e) {
            baseNum2 = 0;
        }
        baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
        return (num1 * baseNum + num2 * baseNum) / baseNum;
    },
    subNum: function (num1, num2) {
        var baseNum, baseNum1, baseNum2;
        var precision;// 精度
        try {
            baseNum1 = num1.toString().split(".")[1].length;
        } catch (e) {
            baseNum1 = 0;
        }
        try {
            baseNum2 = num2.toString().split(".")[1].length;
        } catch (e) {
            baseNum2 = 0;
        }
        baseNum = Math.pow(10, Math.max(baseNum1, baseNum2));
        precision = (baseNum1 >= baseNum2) ? baseNum1 : baseNum2;
        return ((num1 * baseNum - num2 * baseNum) / baseNum).toFixed(precision);
    },
    addCookie: function (name, val, time) {
        var str = name + "=" + escape(val);
        if (time > 0) {
            var date = new Date();
            var ms = time * 3600 * 1000;
            date.setTime(date.getTime() + ms);
            str += "; expires=" + date.toGMTString();
        }
        document.cookie = str;
    },
    getCookie: function (name) {
        var arrStr = document.cookie.split("; ");
        for (var i = 0; i < arrStr.length; i++) {
            var temp = arrStr[i].split("=");
            if (temp[0] == name) {
                return unescape(temp[1]);
            }
        }
    },
    delCookie: function (name) {
        var date = new Date();
        date.setTime(date.getTime() - 10000);
        document.cookie = name + "=a; expires=" + date.toGMTString();
    },
    setTreeNode: function (areaList) {
        if (areaList.length > 0) {
            var treeData = areaList.map(function (s) {
                if (s.childAreaVoList.length > 0) {
                    return {
                        text: s.areaName,
                        id: s.areaId.toString(),
                        nodes: Common.setTreeNode(s.childAreaVoList)
                    }
                } else {
                    return {
                        text: s.areaName,
                        id: s.areaId.toString(),
                    }
                }
            });
            return treeData;
        }
        else
            return [];
    },
};



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++数组模板封装,主要成员包括: public: Array(); Array(int size); Array(int size, T value); Array(Array<T> & other); Array(T * arr, int size); Array(int size, T* arr, int arrSize); template <typename T2> Array(Array<T2> & other); template <typename T2> Array(T2 * arr, int size); template <typename T2> Array(int size, T2 * arr, int arrSize); ~Array(void); inline int Size(); // 返回元素的个数 inline int MemorySize(); // 返回实际占用内存的字节数 inline void ReSize(int size); // 重新设定大小,清除所有的数据 inline T * Buffer(); // 获取内部数组的首地址 inline void SetValue(int index, T val); // 设置第index个数据的值 inline T GetValue(int index); // 获得第index个数据 T SquareOfNorm2(); // 2范式的平方 T SquareOfDistance(Array<T> & another); // 距离另一个数组的距离的平方 T Distance(Array<T> & another); // 计算两个数组的距离 Array<T> Cut(int start, int len); // 从向量中截取一部分成为新的向量 Array<T> Cut(int start); // 将数组剪切一部分,返回新的数组,从start开始,一直到结束 T Norm0(); // 0范式,即求非0元素个数 T Norm1(); // 1范式,即求所有元素的和 T Norm2(); // 2范式,即求所有元素的平方和开根号 T Norm(int p = 2); // p范式 T Sum(); // 所有元素的和 void SetSmallValueToZero(); // 将绝对值小于eps的数值设置为0 T AbsMin(); // 返回绝对值的最小值 T Min(); // 返回最小值 T AbsMax(); // 返回绝对值的最大值 T Max(); // 返回最大值 void Offset(T value); // 所有数据偏移value T Average(); // 获得所有数据的平均值 void AverageTo(T value = 0); // 将数据平均化到某个数值 T Variance(); // 返回方差 void GaussianWhiten(); // 高斯白化,使得数组平均值为0,方差为1 void AbsValues(); // 所有的元素取绝对值 bool InfinityCheck(T maxValue = 1E50); // 数据检查,看数组中是否有数据为无穷大 bool IsZero(); // 返回数据是否全部为0 void Clear(); // 将数据全部清0 void Normalization(); // 正规化,每个元素平方和为1 void SumAsOne(); // 是每个元素的和为1 void SetMinTo(T value); // 将小于value的元素全部设置为value void SetMaxTo(T value); // 将大于value的元素全部设置为value virtual void WriteToTextFile(string filename, bool append = false); virtual void WriteToTextFile(ofstream & o); virtual void ReadFromTextFile(string filename); virtual void ReadFromTextFile(ifstream & i); protected: inline void Init(int size); public: Array<T> & operator = (Array<T> & v); Array<T> & operator = (T value); T & operator[] (int index); template<typename T2> Array<T> & operator = (Array<T2> & v); template<typename T> friend ostream & operator << (ostream & out, Array<T> & vector); template<typename T> friend istream & operator >> (istream & in, Array<T> & vector);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值