• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
IQ.indexOf("EQ")
博客园    首页    新随笔    联系   管理    订阅  订阅

js一些常用的方法

//操作Cookies
function CookiesModel() {
    var _This = this;

    this.get = function (name) {
        var cookie = document.cookie;

        name += '=';

        var i = 0;
        while (i < cookie.length) {
            var offset = i + name.length;
            if (cookie.substring(i, offset) == name) {
                var endstr = cookie.indexOf(';', offset);
                if (endstr == -1) {
                    endstr = cookie.length;
                }

                return decodeURIComponent(unescape(cookie.substring(offset, endstr)));
            }

            i = cookie.indexOf(' ', i) + 1;

            if (i == 0) {
                break;
            }
        }

        return '';
    };

    this.set = function (name, value, domain, day) {
        domain = domain != undefined && domain.trim().length > 0 ? domain : new WindowModel().domain().host.replace('www.', '');
        domain = domain == 'localhost' ? '' : domain;

        var expires = new Date();
        expires.setTime(expires.getTime() + (day != undefined ? day : 7) * 24 * 60 * 60 * 1000);

        var cookie = '{0}={1}; expires={2}; {3}; path=/'.format([name, encodeURIComponent(escape(value)), expires.toGMTString(), domain.length > 0 ? 'domain=' + domain : '']);

        document.cookie = cookie;
    };
}

//获取当前链接的QueryString值
String.prototype.queryString = function (name, is_hashtag) {
    var url = this.replace(new RegExp('(.*)\\?'), '?');
    url = is_hashtag == true ? url.replace(new RegExp('(.*)#'), '') : url.replace(new RegExp('#(.*)'), '');

    if (url.trim().length <= 0) {
        return '';
    }

    var reg = new RegExp('(^|&)' + name.toLocaleLowerCase() + '=([^&]*)(&|$)', "i");

    var r = (url).replace(RegExp('(.*)\\?', 'gi'), '').match(reg);
    if (r != undefined) {
        return decodeURIComponent(r[2]);
    }

    return '';
}

//获取文本字节长度
String.prototype.getLength = function () {
    return this.trim().replace(/[^\u0000-\u00ff]/g, "**").length;
}

//在某位置插入值
String.prototype.insert = function (length, value) {
    return this.substr(0, length) + value + this.substr(length, this.length);
};

//去除左右空格
String.prototype.trim = function (char) {
    char = char != undefined && char.length > 0 ? '\\' + char : '\\s';

    return this == 'undefined' || this == undefined || this == null || this == 'null' ? '' : this.replace(new RegExp('(^' + char + '*)|(' + char + '*$)', 'gi'), '')
};

//字符串格式化
String.prototype.format = function (array) {
    var input = this;

    for (var i in array) {
        input = input.replace(new RegExp('\\{' + i + '\\}', 'gi'), array[i]);
    }

    return input;
};

//返回正整数
String.prototype.toInt = function () {
    var number = new RegExp('([-0-9.]+)', 'gi').exec(this);
    number = number == undefined || isNaN(parseInt(parseFloat(number[0]))) ? 0 : parseInt(parseFloat(number[0]));


    return number;
};

//返回正整数
String.prototype.toFloat = function () {
    var number = new RegExp('([-0-9.]+)', 'gi').exec(this);
    number = number == undefined || isNaN(parseFloat(number[0])) ? 0 : parseFloat(number[0]);

    return number;
};

String.prototype.toPrice = function () {
    return this.match(new RegExp('^\\d+\\.?\\d{0,2}', 'g'));
}

//返回正整数
Number.prototype.toInt = function () {
    return this.toString().toInt();
};

//字符串转JSON
String.prototype.toJSON = function () {
    try {
        //去除毫秒
        var input = this.replace(new RegExp('"([0-9]{4}\-[0-9]{2}\-[0-9]{2} [0-9]{2}\:[0-9]{2}\:[0-9]{2})\.([0-9]+)"', 'gi'), '"$1"');

        return eval('(' + input + ')');
    } catch (e) {
        return null;
    }
};

//字符串转MD5
String.prototype.toMD5 = function () {
    return $.md5(this || '');
};

//字符串Base64加密
String.prototype.base64Encode = function () {
    return Base64.encode(this);
};

//字符串Base64解密
String.prototype.base64Decode = function () {
    return Base64.decode(this);
};

//验证是否为域名
String.prototype.isDomain = function () {
    var input = this;
    input = input.replace(new RegExp('(http://|https://|www.)', 'gi'), '').trim();

    if (input.indexOf('/') != -1 && input.indexOf('/') != input.length - 1) {
        return false;
    }

    input = input.indexOf('/') != -1 ? input.substr(0, input.indexOf('/')).trim() : input;

    return input.length > 0 && new RegExp('([a-z]+)(\\.)([a-z]+)', 'gi').test(input);
};

//验证是否为URL
String.prototype.isURL = function () {
    var strRegex = '^(https|http|ftp|rtsp|mms)?://'
        + '?(([0-9a-z_!~*\'().&=+$%-]+: )?[0-9a-z_!~*\'().&=+$%-]+@)?'
        + '(([0-9]{1,3}\.){3}[0-9]{1,3}'
        + '|'
        + '([0-9a-z_!~*\'()-]+\.)*'
        + '([0-9a-z][0-9a-z-]{0,61})?[0-9a-z]\.'
        + '[a-z]{2,6})'
        + '(:[0-9]{1,4})?'
        + '((/?)|'
        + '(/[0-9a-z_!~*\'().;?:@&=+$,%#-]+)+/?)';
    return new RegExp(strRegex).test(this.trim());
};

//验证是否为Email
String.prototype.isEmail = function () {
    var reg = /^((\"[^\"\f\n\r\t\v\b]+\")|([\w\!\#\$\%\&'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/;
    return reg.test(this.trim());
};

//验证是否为手机
String.prototype.isPhone = function () {
    var reg = /^1[0-9]{10}$/;
    return reg.test(this.trim());
};

//验证是否为手机/电话
String.prototype.isTelephone = function () {
    telephone = /^0\d{10}$/;

    if (telephone.test(this.trim())) {
        return true;
    }

    telephone = /^0\d{10}-\d{0,4}$/;

    if (telephone.test(this.trim())) {
        return true;
    }

    telephone = /^0\d{2}-\d{8}$/;

    if (telephone.test(this.trim())) {
        return true;
    }

    telephone = /^0\d{2}-\d{8}-\d{0,4}$/;

    if (telephone.test(this.trim())) {
        return true;
    }

    telephone = /^0\d{3}-\d{7,8}$/;

    if (telephone.test(this.trim())) {
        return true;
    }

    telephone = /^0\d{3}-\d{7,8}-\d{0,4}$/;

    if (telephone.test(this.trim())) {
        return true;
    }

    telephone = /^400\d{7}$/;

    if (telephone.test(this.trim())) {
        return true;
    }

    telephone = /^400-\d{3}-\d{4}$/;

    if (telephone.test(this.trim())) {
        return true;
    }

    telephone = /^1[0-9]{10}$/;

    if (telephone.test(this.trim())) {
        return true;
    }

    return false;
};

//验证是否为价格
String.prototype.isPrice = function () {
    var reg;
    if (this.indexOf('0') == 0 && this.length > 1) {
        //0开头的数字串
        reg = /^[0]{1}[.]{1}[0-9]{1,2}$/;
    }
    else {
        //非0开头的数字
        reg = /^[1-9]{1}[0-9]{0,17}[.]{0,1}[0-9]{0,2}$/;
    }

    return reg.test(this);
};

//转换首字母大写
String.prototype.toTitleCase = function () {
    var inputs = this.toString().split(' ');

    if (inputs.length == 1) {
        return this;
    }

    var output = '';
    for (var i = 0; i < inputs.length; i++) {
        var firstChar = inputs[i].substring(0, 1);

        if (new RegExp('[a-z]+', 'gi').test(firstChar)) {
            output += firstChar.toLocaleUpperCase() + inputs[i].substring(1, inputs[i].length) + ' ';
        }
    }
    return output.trim();
};

//返回首字母
String.prototype.toFirstLetter = function () {
    var inputs = this.toString().split(' ');

    var output = '';
    for (var i = 0; i < inputs.length; i++) {
        output += inputs[i].substring(0, 1);
    }
    return output.trim();
};

//时间格式化
String.prototype.toDate = function () {
    var input = this;
    input = input.replace(RegExp('\\.(.*)', 'gi'), '');
    input = input.replace(RegExp('-', 'gi'), '/');
    input = input.replace(RegExp('年|月', 'gi'), '/');
    input = input.replace(RegExp('日', 'gi'), '');
    input = input.replace(RegExp('T', 'gi'), ' ');
    return new Date(input);
};

//检测是否为时间
String.prototype.isDate = function () {
    var input = this;
    input = input == undefined ? '' : input.toString().toDate();
    return new Date(input) != 'Invalid Date' && new Date(input) != 'NaN';
};

//首字母大写
String.prototype.toFirstUpperCase = function () {
    var input = this || '';

    return input.toLocaleLowerCase().replace(/\b([\w|'|_]+)\b/g, function (word) {
        return word.replace(word.charAt(0), word.charAt(0).toUpperCase());
    });
};

//删除HTML
String.prototype.removeHTML = function () {
    return this.replace(/<[^>]+>/gi, '');
}

String.prototype.uploadHtmlImg = function () {
    var reg = /<img.+?src=('|")?([^'"]+)('|")?(?:\s+|>)/gim;

    var srcs = [];

    while (match = reg.exec(this)) {
        if (srcs.grep(function (item) { return item == match[2] }).length <= 0) {
            srcs.push(match[2]);
        }
    }

    console.log(srcs)
}

//补位0
Number.prototype.prefixInteger = function (n) {
    return this.toString().length > n ? this.toString() : (Array(n).join(0) + this).slice(-n);
}

//检测是否为时间
Date.prototype.isDate = function () {
    return this != 'Invalid Date';
};

//时间格式化
Date.prototype.toDate = function () {
    return this;
};

//时间格式化
Date.prototype.format = function (format) {
    var obj = {
        'M+': this.getMonth() + 1,
        'd+': this.getDate(),
        'H+': this.getHours(),
        'm+': this.getMinutes(),
        's+': this.getSeconds(),
        'q+': Math.floor((this.getMonth() + 3) / 3),
        'S': this.getMilliseconds()
    };

    if (/(y+)/.test(format)) {
        format = format.replace(RegExp.$1, (this.getFullYear() + '').substr(4 - RegExp.$1.length));
    }

    for (var item in obj) {
        if (new RegExp('(' + item + ')').test(format)) {
            format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? obj[item] : ('00' + obj[item]).substr(('' + obj[item]).length));
        }
    }

    return format;
};

//时间戳
Date.prototype.timestamp = function () {
    return parseInt(new Date().getTime() / 1000);
};

//时间戳
Date.prototype.toTimestamp = function () {
    return parseInt(this.getTime() / 1000);
};

//返回当月天数
Date.prototype.countDays = function () {
    var date = this.format('yyyy-MM-dd HH:mm:ss').toDate();

    date.setMonth(date.getMonth() + 1);
    date.setDate(0);

    return date.getDate();
};

//返回周几(数字,周一为起始日)
Date.prototype.weekByMonday = function () {
    return this.getDay() == 0 ? 7 : this.getDay();
};

//时间加
Date.prototype.dateAdd = function (format, input) {
    var date = this.format('yyyy-MM-dd HH:mm:ss').toDate();

    switch (format) {
        case 'year':
        case 'yyyy':
        case 'yy':
            date.setYear(date.getFullYear() + input);
            break;
        case 'MM':
            date.setMonth(date.getMonth() + input);
            break;
        case 'dd':
            date.setDate(date.getDate() + input);
            break;
        case 'HH':
            date.setHours(date.getHours() + input);
            break;
        case 'mm':
            date.setMinutes(date.getMinutes() + input);
            break;
        case 'ss':
            date.setSeconds(date.getSeconds() + input);
            break;
    }

    return date;
};

//返回树
Array.prototype.toTree = function (key, parent_key, parent_id) {
    var _List = this;

    var list = $.grep(_List, function (item) {
        var value = item;
        $(parent_key.split('.')).each(function () {
            value = value[this.toString()];
        });

        return value == parent_id
    });

    if (list.length <= 0) {
        return [];
    }

    $(list).each(function () {
        var value = this;
        $(key.split('.')).each(function () {
            value = value[this.toString()];
        });

        this.subs = _List.toTree(key, parent_key, value);
    });

    return list;
}

//返回树转列表
Array.prototype.treeToList = function () {
    var list = [];

    $(this).each(function () {
        list.push(this);

        if ((this.subs || []).length > 0) {
            list.push.apply(list, this.subs.treeToList());
        }
    })

    return list;
}

//过滤筛选
Array.prototype.grep = function (func, is_undefined) {
    var list = $.grep(this, func);

    return list.length <= 0 && is_undefined == true ? undefined : list;
}

//过滤筛选
Array.prototype.move = function (index, size) {
    if (index + size < 0 || index + size > this.length - 1) {
        return this;
    }

    var a = this[index];
    var b = this[index + size];

    this[index] = b;
    this[index + size] = a;

    this.push(a);
    this.splice(this.length - 1, 1);

    return this;
}

//数组去重
Array.prototype.distinct = function () {
    var arr = this,
        result = [],
        len = arr.length;
    arr.forEach(function (v, i, arr) {  //这里利用map,filter方法也可以实现
        var bool = arr.indexOf(v, i + 1);  //从传入参数的下一个索引值开始寻找是否存在重复
        if (bool === -1) {
            result.push(v);
        }
    })
    return result;
};

//转换JSON为字符串
function convertJsonString(obj, isClear) {
    var jsonStr = '';

    var array = [];

    function convert_obj(input) {
        switch (Object.prototype.toString.apply(input).toLocaleLowerCase()) {
            case '[object date]':
                {
                    return '"' + input.format('yyyy-MM-dd HH:mm:ss.000') + '"';
                }
                break;
            case '[object number]':
                {
                    return input.toString();
                }
                break;
            default:
                if ((input || '').toString().trim().length == 19 && input.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2}) (\d{1,2}):(\d{1,2}):(\d{1,2})$/)) {
                    return input.toString() + '.000';
                }

                if (input != undefined) {
                    return JSON.stringify(input).trim('"'); //input.toString().replace(new RegExp('"(.*?)"', 'gi'), '\\"$1\\"')
                }

                return undefined;
                break;
        }
    }

    switch (Object.prototype.toString.apply(obj).toLocaleLowerCase()) {
        case '[object array]':
            {
                for (var i = 0; i < obj.length; i++) {
                    array.push(typeof (obj[i]) === 'object' ? convertJsonString(obj[i], isClear) : (typeof (obj[i]) === 'string' ? '"{0}"' : '{0}').format([convert_obj(obj[i])]));
                }
                jsonStr = '[' + array.join(',') + ']';
            }
            break;
        case '[object object]':
            {
                for (var i in obj) {
                    if (typeof (obj[i]) == 'function') {
                        continue;
                    }

                    array.push('"{0}":{1}'.format([i, typeof (obj[i]) === 'object' ? convertJsonString(obj[i], isClear) : '"' + convert_obj(obj[i]) + '"']));
                }
                jsonStr = '{' + array.join(',') + '}';
            }
            break;
        case '[object namednodemap]':
            {
                for (var i = 0; i < obj.length; i++) {
                    if (obj[i].name == undefined) {
                        continue;
                    }
                    array.push('"{0}":{1}'.format([obj[i].name, typeof (obj[i].value) === 'object' ? convertJsonString(obj[i].value, isClear) : '"' + convert_obj(obj[i].value) + '"']));
                }
                jsonStr = '{' + array.join(',') + '}';
            }
            break;
        default:
            jsonStr = convert_obj(obj);
            break;
    }

    if (isClear != false && jsonStr != undefined) {
        jsonStr = jsonStr.replace(new RegExp('(,|)[\"a-zA-Z0-9_]+:"null"', 'gi'), '');
        jsonStr = jsonStr.replace(new RegExp('(,|)[\"a-zA-Z0-9_]+:"null"', 'gi'), '');

        jsonStr = jsonStr.replace(new RegExp('(,|)[\"a-zA-Z0-9_]+:"undefined"', 'gi'), '');
        jsonStr = jsonStr.replace(new RegExp('(,|)[\"a-zA-Z0-9_]+:"undefined"', 'gi'), '');

        jsonStr = jsonStr.replace(new RegExp('(,|)[\"a-zA-Z0-9_]+:undefined', 'gi'), '');
        jsonStr = jsonStr.replace(new RegExp('(,|)[\"a-zA-Z0-9_]+:undefined', 'gi'), '');

        jsonStr = jsonStr.replace(new RegExp('(,|)[\"a-zA-Z0-9_]+:{}', 'gi'), '');
        jsonStr = jsonStr.replace(new RegExp('(,|)[\"a-zA-Z0-9_]+:{}', 'gi'), '');

        jsonStr = jsonStr.replace(new RegExp('(,|)[\"a-zA-Z0-9_]+:\\[\\]', 'gi'), '');
        jsonStr = jsonStr.replace(new RegExp('(,|)[\"a-zA-Z0-9_]+:\\[\\]', 'gi'), '');

        jsonStr = jsonStr.replace(new RegExp('(,|)[\"a-zA-Z0-9_]+:\\"\\"', 'gi'), '');
        jsonStr = jsonStr.replace(new RegExp('(,|)[\"a-zA-Z0-9_]+:\\"\\"', 'gi'), '');

        jsonStr = jsonStr.replace(new RegExp('\\{(,|)', 'gi'), '{');
        jsonStr = jsonStr.replace(new RegExp('(,|)\\}', 'gi'), '}');

        jsonStr = jsonStr == '{}' ? undefined : jsonStr;
    }

    return jsonStr;
};

//深拷贝
function deepCopy(obj) {
    var result = {};

    if (obj.constructor == Array) {
        result = [];
    }

    for (var key in obj) {
        result[key] = typeof obj[key] === 'object' ? deepCopy(obj[key]) : obj[key];
    }

    return result;
}

 

posted @ 2019-01-04 16:03  凉生初雨  阅读(204)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3