JavaScript常用方法

来源:互联网 发布:股票模拟软件哪个好 编辑:程序博客网 时间:2024/05/21 18:48

点击正则简单介绍

金额处理成小数百分位¥20:00accurate(salary){ if (salary % 1 === 0) {        return `${salary}.00`;    } else if (/^(-?\d+)(\.\d{1})?$/.test(salary)) {        return `${salary}0`;    } else if (/^(-?\d+)(\.\d{2})?$/.test(salary)) {        return salary;    }},去掉首尾空格/**     * 清除字符串两边的空字符     * @param str     * @param isGlobal     * @returns {string|*}     */    trim: function(str, isGlobal){        let result;        result = String(str).replace(/(^\s+)|(\s+$)/g, "");        if(isGlobal) {            result = result.replace(/\s/g, "");        }        return result;    },    sortBy: function (filed, rev, primer) {        rev = (rev) ? -1 : 1;        return function (a, b) {            a = a[filed];            b = b[filed];            if (typeof (primer) !== 'undefined') {                a = primer(a);                b = primer(b);            }            if (a < b) { return rev * -1; }            if (a > b) { return rev * 1; }            return 1;        }    },    /**首字母大写,第二个字母后全部小写**/    toCamelCase: function (string) {        string = String(string).toLowerCase().replace(/-(.)/g, function(match, group1) {            return group1.toUpperCase();        });        return this.ucfirst(string);    },    ucfirst: function (string) {        return string.replace(/(\w)/, function(v){return v.toUpperCase()});    },    /**     * 时间格式     * @param date {Date} 时间     * @param format [String] 格式,默认为yyyy-MM-dd hh:mm:ss     * @return {String}     */    dateFormat: function(date, format){        if(this.isString(date)){            date = this.dateCreate(date);        }else if(!this.isDate(date)){            return date;        }        let cfg = {            yyyy : date.getFullYear() //年 : 4位            , yy : date.getFullYear().toString().substring(2)//年 : 2位            , M  : date.getMonth() + 1  //月 : 如果1位的时候不补0            , MM : this.zeroPad(date.getMonth() + 1, 2) //月 : 如果1位的时候补0            , d  : date.getDate()   //日 : 如果1位的时候不补0            , dd : this.zeroPad(date.getDate(), 2)//日 : 如果1位的时候补0            , hh : this.zeroPad(date.getHours(), 2)  //时            , mm : this.zeroPad(date.getMinutes(), 2) //分            , ss : this.zeroPad(date.getSeconds(), 2) //秒            , h  : date.getHours()            , m  : date.getMinutes()            , s  : date.getSeconds()            , W  : date.getDay()        };        format || (format = "yyyy-MM-dd hh:mm:ss");        return format.replace(/([a-z])(\1)*/ig, function(m){return cfg[m];});    },    getTimestamp: function(serverTimeString){        if(!serverTimeString)return 0;        if(!this.isString(serverTimeString)){            serverTimeString = String(serverTimeString);        }        let m = serverTimeString.match(/Date\(([\d\-]+)\)/);        if(m && m[1]){            return parseInt(m[1]);        }        return 0;    },    /**     * 时间比较     * @param objDate1     * @param objDate2     * @param interval y 年,q    季度,m    月,d 日,w 周,h 小时,n    分钟,s    秒,ms    毫秒     * @returns {*}     */    dateDiff: function(objDate1, objDate2, interval){        let d = objDate1, i = {}, t = d.getTime(), t2 = objDate2.getTime();        i['y'] = objDate2.getFullYear() - d.getFullYear();        i['q'] = i['y'] * 4 + Math.floor(objDate2.getMonth() / 4) - Math.floor(d.getMonth() / 4);        i['m'] = i['y'] * 12 + objDate2.getMonth() - d.getMonth();        i['ms'] = objDate2.getTime() - d.getTime();        i['w'] = Math.floor((t2 + 345600000) / (604800000)) - Math.floor((t + 345600000) / (604800000));        i['d'] = Math.floor(t2 / 86400000) - Math.floor(t / 86400000);        i['h'] = Math.floor(t2 / 3600000) - Math.floor(t / 3600000);        i['n'] = Math.floor(t2 / 60000) - Math.floor(t / 60000);        i['s'] = Math.floor(t2 / 1000) - Math.floor(t / 1000);        return i[interval];    },    /**     * 零填充     * @param num     * @param len 填充长度     * @returns {String}     */    zeroPad: function(num, len){        num += '';        len -= num.length;        for(let i=0;i<len;i++)num = '0'+num;        return num;    },    /**     * 字符串重复     * @param str 源字符     * @param len 重复次数     * @returns {*}     */    repeat: function(str, len){        if(len > 1){            let old = str;            for(let i=1;i<len;i++)str += old;        }        return str;    },    setUrlParameter: function(name, value, url){        function changeURLPar(url, ref, value) {            let str = "";            if (url.indexOf('?') !== -1)                str = url.substr(url.indexOf('?') + 1);            else                return url + (value!==null?("?" + ref + "=" + value):'');            let returnurl = "";            let setparam = "";            let arr;            let modify = "0";            if (str.indexOf('&') !== -1) {                arr = str.split('&');                for (let i in arr) {                    if (arr[i].split('=')[0] === ref) {                        setparam = value;                        modify = "1";                    }                    else {                        setparam = arr[i].split('=')[1];                    }                    if(value !== null)returnurl = returnurl + arr[i].split('=')[0] + "=" + setparam + "&";                }                returnurl = returnurl.substr(0, returnurl.length - 1);                if (modify === "0")                    if (returnurl === str)                        returnurl = returnurl + "&" + ref + "=" + value;            }            else {                if (str.indexOf('=') !== -1) {                    arr = str.split('=');                    if (arr[0] === ref) {                        setparam = value;                        modify = "1";                    }                    else {                        setparam = arr[1];                    }                    if(setparam!==null)returnurl = arr[0] + "=" + setparam;                    if (modify === "0" && returnurl === str && value !== null){                        returnurl = returnurl + "&" + ref + "=" + value;                    }                }else{                    if(value !== null)returnurl = ref + "=" + value;                }            }            return url.substr(0, url.indexOf('?')) + (String(returnurl).length?"?" + returnurl:'');        }        if(this.isObject(name)){            url = url || value || document.URL;            for(let k in name){                url = changeURLPar(url || value || document.URL, k, name[k]);            }            return url;        }else{            return changeURLPar(url || document.URL, name, value);        }    },    /**     * 创建一个日期     * @param dateStr     * @returns {Date}     */    dateCreate: function(dateStr){        dateStr = dateStr.replace(/-/g, '/');        return new Date(dateStr);    },    str_tags: function(html){        if(typeof html !== "string")return html;        html = html.replace(/(<br>|<br\/>|<br \/>)/g, '\r\n');        html = html.replace(/<\/?[^>]*>/g, '');        return html;    },    nl2br: function(str){        if(typeof str !== "string")return str;        return str.replace(/\n/g, '<br>');    },    /**     * 生成范围随机数     * @param start     * @param end     * @returns {*}     */    random: function(start, end){        end = end || start + start;        return Math.round(Math.random() * (end - start)) + start    },    randomString: function(){        return Math.random().toString(36).substr(2);    },    /**     * 添加千分位符号     * @returns string     * @param input     */    formatThousandth: function (input) {        let n = parseFloat(input).toFixed(2);        let re = /(\d{1,3})(?=(\d{3})+(?:\.))/g;        return n.replace(re, "$1,");    },    /**     * 产生任意长度随机字母数字组合     * @param randomFlag 是否任意长度     * @param min 任意长度最小位[固定位数]     * @param max 任意长度最大位     * @returns {string}     */    randomWord: function randomWord(randomFlag, min, max){        let str = "",            range = min,            arr = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'];        // 随机产生        if(randomFlag){            range = Math.round(Math.random() * (max-min)) + min;        }        for(let i=0; i<range; i++){            let pos = Math.round(Math.random() * (arr.length-1));            str += arr[pos];        }        return str;    },    /**     * 创建全局临时函数     * @param {function} func     * @returns {string}     */    createTempFunction: function(func){        let key = 'temp_function_' + Math.random().toString(36).substr(2);        window[key] = func;        return key;    },    /**     *     * @param {string} tmpName     * @param {Array} [args]     * @returns {boolean}     */    callTempFunction: function(tmpName, args){        if(!window[tmpName])return false;        let tmp = window[tmpName];        delete window[tmpName];        if(typeof tmp === "function"){            return tmp.call(window, args);        }        return null;    },    /**     * 严格模式     * 判断值是否在数组中     * @param v     * @param arr     * @returns {boolean}     */    inArray: function(v, arr){        if (!this.isArray(arr))return false;        for (let i = 0; i < arr.length; i++) {            if (v === arr[i]) {                return true;            }        }        return false;    },    /**     * 判断值是否在数组中     * @param v     * @param arr     * @returns {boolean}     */    in_array: function(v, arr){        if (!this.isArray(arr))return false;        for (let i = 0; i < arr.length; i++) {            if (v === arr[i]) {                return true;            }        }        return false;    },    array_duplicate: function(arr, key){        let tmp = {};        for(let k in arr){            if(this.isString(arr[k])){                tmp[arr[k]] = arr[k];            }else{                tmp[arr[k][key]] = arr[k];            }        }        let tmp2 = [];        for(let k in tmp){            tmp2.push(tmp[k]);        }        return tmp2;    },    /*     * JSON数组去重     * @param: [array] json Array     * @param: [string] 唯一的key名,根据此键名进行去重     */    uniqueArray: function (array, key){        let result = [array[0]];        for(let i = 1; i < array.length; i++){            let item = array[i];            let repeat = false;            for (let j = 0; j < result.length; j++) {                if (item[key] === result[j][key]) {                    repeat = true;                    break;                }            }            if (!repeat) {                result.push(item);            }        }        return result;    },    cookie: {        constructor: function cookie(key, value, options) {            // key and at least value given, set cookie...            if (arguments.length > 1 && (!/Object/.test(Object.prototype.toString.call(value)) || value === null || value === undefined)) {                options = utils.extend({}, options);                if (value === null || value === undefined) {                    options.expires = -1;                }                if (typeof options.expires === 'number') {                    let days = options.expires, t = options.expires = new Date();                    t.setDate(t.getDate() + days);                }                value = String(value);                return (document.cookie = [                    encodeURIComponent(key), '=', options.raw ? value : encodeURIComponent(value),                    options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE                    options.path    ? '; path=' + options.path : '',                    options.domain  ? '; domain=' + options.domain : '',                    options.secure  ? '; secure' : ''                ].join(''));            }            // key and possibly options given, get cookie...            options = value || {};            let decode = options.raw ? function(s) { return s; } : decodeURIComponent;            let pairs = document.cookie.split('; ');            for (let i = 0, pair; pair = pairs[i] && pairs[i].split('='); i++) {                if (decode(pair[0]) === key) return decode(pair[1] || ''); // IE saves cookies with empty string as "c; ", e.g. without "=" as opposed to EOMB, thus pair[1] may be undefined            }            return null;        },        get: function(name, defaults){            let data = this.constructor(name);            if(!data)data = defaults;            return data;        },        set: function(name, value, path){            return this.constructor(name, value, {path: path || '/'})        }    }};(function(){    ['String', 'Function', 'Date', 'Array', 'Boolean', 'Null', 'Number', 'Object'].forEach((v, i)=>{        utils['is' + v] = function (obj) {            return Object.prototype.toString.call(obj) === '[object ' + v + ']';        }    })    /**     * 判断是否手机号码     * @param mobile     * @returns {boolean}     */    utils['isMobile'] = function (mobile) {        mobile = mobile || '';        return !!mobile.match(/^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57])[0-9]{8}$/);    }})();(function(){    /**     * 倒计时     * @param {Integer} i 计时总秒数     * @param {Function} callback 计时完成后回调     * @param {Function} t 每次倒数时回调     */    function Countdown(i, callback, t){        this.total = this.i = i;        this.callback = callback;        this.t = t;    }    Countdown.prototype = {        out: function(){            let self = this;            if(self.runing && self.i > 0){                self.i--;                if(self.t){                    self.t(self.i);                }                setTimeout(function(){                    self.out.call(self);                }, 1000);            }else{                self.callback.call(self)            }            return self;        },        start: function(){            this.runing = true;            return this.out();        },        stop: function(){            this.i = this.total;            this.runing = false;        }    };    utils.Countdown = Countdown;})();(function(){    /**     * Storage     * @type {{storage: Function, get: Function, set: Function}}     * @return {*}     */    function Storage(name, value, expired){        if(!name)return null;        let storage = window.localStorage;        let date = new Date();        let _watch = name;        name = 'STORAGE_COMPANY_' + String(name).toLocaleUpperCase();        if(value === null){ //当值为空时删除            if(storage.hasOwnProperty(name)){                storage.removeItem(name);            }            Storage._execWatch(_watch, null)        }else if(!value){            let item = storage.getItem(name);            if(item){                item = JSON.parse(item);                if(item.expired > 0 && item.expired - date.getTime() < 0){                    storage.removeItem(name);                    Storage._execWatch(_watch, null);                }else{                    return item.value;                }            }        }else{            let ret = storage.setItem(name, JSON.stringify({                value: value,                expired: expired > 0 ? date.getTime() + expired * 1000 : 0            }));            Storage._execWatch(_watch, value. ret);            return ret;        }        return null;    }    Storage._watchers = {};    Storage._execWatch = function(prop, args){        let _watch = Storage._watchers[prop] || [];        _watch.forEach((handler, i)=>{            if(handler && typeof handler === "function"){                handler(args);            }        })    };    utils.Storage = Storage;    utils.Storage.watch = function(prop, handler) {        Storage._watchers[prop] = Storage._watchers[prop] || [];        Storage._watchers[prop].push(handler);    };    utils.Storage.watchOne = function(prop, handler) {        Storage._watchers[prop] && delete Storage._watchers[prop];        Storage._watchers[prop] = [handler];    };    utils.Storage.unwatch = function(prop, handler) {        let _handlers = Storage._watchers[prop] || [];        if(handler){            for(let i=0;i<_handlers.length;i++){                if(_handlers[i] === handler){                    _handlers.slice(i, 1);                }            }            Storage._watchers[prop] = _handlers;        }else{            Storage._watchers[prop] = [];        }    };    utils.Storage.get = function(name, defaultValue){        let value = Storage(name);        return value || defaultValue;    };    /**     *     * @param {String} name     * @param {*} value     * @param {int} expired 过期时间     * @returns {*}     */    utils.Storage.set = function(name, value, expired){        if(typeof value === "undefined")throw new Error("The value must be filled in, may be null!");        return Storage(name, value || null, expired || 0);    };
(function(){    let base64 = {};    base64.map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';    base64.decode = function(s){        s += '';        let len = s.length;        if((len === 0) || (len % 4 !== 0)){            return s;        }        let pads = 0;        if(s.charAt(len - 1) === base64.map[64]){            pads++;            if(s.charAt(len - 2) === base64.map[64]){                pads++;            }            len -= 4;        }        let i, b, map = base64.map, x = [];        for(i = 0; i < len; i += 4){            b = (map.indexOf(s.charAt(i)) << 18) | (map.indexOf(s.charAt(i + 1)) << 12) | (map.indexOf(s.charAt(i + 2)) << 6) | map.indexOf(s.charAt(i + 3));            x.push(String.fromCharCode(b >> 16, (b >> 8) & 0xff, b & 0xff));        }        switch(pads){        case 1:            b = (map.indexOf(s.charAt(i)) << 18) | (map.indexOf(s.charAt(i)) << 12) | (map.indexOf(s.charAt(i)) << 6);            x.push(String.fromCharCode(b >> 16, (b >> 8) & 0xff));            break;        case 2:            b = (map.indexOf(s.charAt(i)) << 18) | (map.indexOf(s.charAt(i)) << 12);            x.push(String.fromCharCode(b >> 16));            break;        }        return unescape(x.join(''));    };    base64.encode = function(s){        if(!s){            return;        }        s += '';        if(s.length === 0){            return s;        }        s = escape(s);        let i, b, x = [], map = base64.map, padchar = map[64];        let len = s.length - s.length % 3;        for(i = 0; i < len; i += 3){            b = (s.charCodeAt(i) << 16) | (s.charCodeAt(i+1) << 8) | s.charCodeAt(i+2);            x.push(map.charAt(b >> 18));            x.push(map.charAt((b >> 12) & 0x3f));            x.push(map.charAt((b >> 6) & 0x3f));            x.push(map.charAt(b & 0x3f));        }        switch(s.length - len){        case 1:            b = s.charCodeAt(i) << 16;            x.push(map.charAt(b >> 18) + map.charAt((b >> 12) & 0x3f) + padchar + padchar);            break;        case 2:            b = (s.charCodeAt(i) << 16) | (s.charCodeAt(i + 1) << 8);            x.push(map.charAt(b >> 18) + map.charAt((b >> 12) & 0x3f) + map.charAt((b >> 6) & 0x3f) + padchar);            break;        }        return x.join('');    };    utils.base64 = base64;})();(function(){    let key = 0x8912;    function encrypt(str) {        let m = [];        str = String(str);        for (let i = 0; i < str.length; i++) {            let c = str.charCodeAt(i) ^ key;            m.push(String.fromCharCode(c));        }        return m.join('');    }    function decrypt(str) {        let m = [];        str = String(str);        for (let i = 0; i < str.length; i++) {            let c = key ^ str.charCodeAt(i);            m.push(String.fromCharCode(c));        }        return m.join('');    }    utils.encrypt = function(str){        return utils.base64.encode(encrypt(str));    };    utils.decrypt = function(str){        if(str && str.match(/^[a-zA-Z0-9=/+]+?$/)){            str = utils.base64.decode(str);        }        return decrypt(str);    };})();//短网址(function(){    utils.getShortUrl = function(url, callback){        global.Dom7.ajax({            url: 'https://msurl.cn/short_url.jsonp?callback=',            data: {                url: url            },            dataType: 'json',            success: function(data){                if(data && !data.error){                    if(callback)callback(data.url);                }else{                    if(callback)callback(url);                }            }        });    }})();utils.clearStorage = function(prefix, exclude){    if(typeof window.localStorage === 'undefined')return;    let excludes = ['STORAGE_COMPANY_MEMBER_INFO', 'STORAGE_COMPANY_SESSION_ID'];    if(exclude){        excludes = excludes.concat(exclude)    }    for(let key in window.localStorage){        if(utils.inArray(key, excludes)){            continue;        }        if(prefix){            if (key.substr(0, prefix.length) === prefix) {                window.localStorage.removeItem(key);            }        }else{            window.localStorage.removeItem(key);        }    }};

快捷键

  • 加粗 Ctrl + B
  • 斜体 Ctrl + I
  • 引用 Ctrl + Q
  • 插入链接 Ctrl + L
  • 插入代码 Ctrl + K
  • 插入图片 Ctrl + G
  • 提升标题 Ctrl + H
  • 有序列表 Ctrl + O
  • 无序列表 Ctrl + U
  • 横线 Ctrl + R
  • 撤销 Ctrl + Z
  • 重做 Ctrl + Y