(转) 常用的扩展js基础类的方法

  1.  /** 
  2.          * 扩展基础类 
  3.          * 得到字符串的长度,包括中文和英文 
  4.          **/  
  5.         String.prototype.charlen = function() {  
  6.             var arr = this.match(/[^\x00-\xff]/ig);  
  7.             return this.length + (arr == null ? 0 : arr.length);  
  8.         }  
  9.   
  10.         /** 
  11.          * 扩展基础类 
  12.          * 格式化字符串${0} -> 参考printf %s 
  13.          **/  
  14.         String.prototype.format = function() {  
  15.             var args = arguments;  
  16.             return this.replace(/\$\{(\d+)\}/g,                
  17.                 function(m, i){  
  18.                     return args[i];  
  19.                 });  
  20.         }   
  21.   
  22.         /** 
  23.          * 扩展基础类 
  24.          * 字符串首尾去空格 
  25.          **/  
  26.         String.prototype.trim = function() {  
  27.             return this.replace(/(^\s*)|(\s*$)/g, "");  
  28.         }  
  29.   
  30.         /** 
  31.          * 扩展基础类 
  32.          * 字符串包含字符串判断 
  33.          **/  
  34.         String.prototype.contains = function(sub) {  
  35.             return this.indexOf(sub) != -1;  
  36.         }  
  37.   
  38.         /** 
  39.          * 扩展基础类 
  40.          * 字符串比较大小 
  41.          **/  
  42.         String.prototype.compare = function(b) {  
  43.             if(!b)  
  44.                 return -1;  
  45.   
  46.             if(this.length != b.length)  
  47.                 return this.length - b.length;  
  48.   
  49.             var i = 0;  
  50.             for (; i < this.length; i++){  
  51.                 var val = this.charCodeAt(i) - b.charCodeAt(i);  
  52.                 if(val != 0)  
  53.                     return val;  
  54.             }  
  55.   
  56.             return 0;  
  57.         }  
  58.   
  59.         /** 
  60.          * 扩展基础类 
  61.          * 替换字符 
  62.          **/  
  63.         String.prototype.replaceLen = function(start, len, replaced) {  
  64.             if(!len)  
  65.                 return this;  
  66.   
  67.             if(start >= this.length)  
  68.                 return this;  
  69.   
  70.             var returnSeg = '';  
  71.             var returnSeg2 = '';  
  72.             var i = 0;  
  73.             for (; i < this.length; i++){  
  74.                 var c = this.charAt(i);  
  75.                 if(i < start)  
  76.                     returnSeg += c;  
  77.   
  78.                 if(i >= start + len)  
  79.                     returnSeg2 += c;  
  80.             }  
  81.   
  82.             return returnSeg + replaced + returnSeg2;  
  83.         }  
  84.   
  85.         /** 
  86.          * 扩展基础类 
  87.          * 替换字符,这个在替换填入比较有用,比如***天***小时 替换为 <input />天<input />小时 
  88.          **/  
  89.         String.prototype.replaceChar = function(target, replaced, start) {  
  90.             if(!target)  
  91.                 return this;  
  92.   
  93.             if(!start)  
  94.                 start = 0;  
  95.   
  96.             var returnVal = this.substring(0, start);  
  97.             var index = 0;  
  98.             for (var i = start; i < this.length; i++) {  
  99.                 var c = this.charAt(i);  
  100.                 target = typeof target == 'function' ? target.call(this, index) : target;  
  101.                 if (c == target) {  
  102.                     returnVal += typeof replaced == 'function' ? replaced.call(this, index) : replaced;  
  103.                     while (i < this.length - 1 && this.charAt(i + 1) == c) {  
  104.                         i++;  
  105.                     }  
  106.                     index++;  
  107.                 }else{  
  108.                     returnVal += c;  
  109.                 }  
  110.             }  
  111.   
  112.             return returnVal;  
  113.         }  
  114.   
  115.         /** 
  116.          * 扩展基础类 
  117.          * 克隆复制(简单copy而已) 
  118.          **/  
  119.         Array.prototype.clone = function(){  
  120.             var arr = [];  
  121.             var i = 0;  
  122.             for(; i < this.length; i++){  
  123.                 switch(typeof this[i]){  
  124.                     case 'object':  
  125.                         var obj = {};  
  126.                         for(key in this[i])  
  127.                             obj[key] = this[i][key];  
  128.                         arr.push(obj);  
  129.                         break;  
  130.                     default:  
  131.                         arr.push(this[i]);  
  132.                         break;  
  133.                 }  
  134.             }  
  135.             return arr;  
  136.         }  
  137.   
  138.         /** 
  139.          * 扩展基础类 
  140.          * 清空 
  141.          **/  
  142.         Array.prototype.clear = function() {  
  143.             this.splice(0, this.length);  
  144.         }  
  145.   
  146.         /** 
  147.          * 扩展基础类 
  148.          * 数组包含元素 
  149.          **/  
  150.         Array.prototype.contains = function(el) {  
  151.             var i;  
  152.             for(i = 0; i < this.length; i++) {    
  153.                 if(this[i] == el)    
  154.                     return true;    
  155.             }    
  156.             return false;    
  157.         }  
  158.   
  159.         /** 
  160.          * 扩展基础类 
  161.          * 数组添加数组 
  162.          **/  
  163.         Array.prototype.merge = function(arr) {  
  164.             if(arr){  
  165.                 var i;  
  166.                 for(i = 0; i < arr.length; i++) {    
  167.                     this.push(arr[i]);  
  168.                 }    
  169.             }  
  170.         }  
  171.   
  172.         /** 
  173.          * 扩展基础类 
  174.          * 根据值和属性获取到数组的对象下标 
  175.          **/  
  176.         Array.prototype.indexOf = function(val, field){  
  177.             var i = 0;  
  178.             for(; i < this.length; i++){  
  179.                 if(this[i] && (field ? this[i][field] == val : this[i] == val)){  
  180.                     return i;  
  181.                 }  
  182.             }  
  183.             return -1;  
  184.         }  
  185.   
  186.         /** 
  187.          * 扩展基础类 
  188.          * 最后一个下标 
  189.          **/  
  190.         Array.prototype.lastIndexOf = function(val, field){  
  191.             var i = 0;  
  192.             var max = -1;  
  193.             for(; i < this.length; i++){  
  194.                 if(this[i] && (field ? this[i][field] == val : this[i] == val)){  
  195.                     max = i;  
  196.                 }  
  197.             }  
  198.             return max;  
  199.         }  
  200.   
  201.         /** 
  202.          * 扩展基础类 
  203.          * 数组唯一 
  204.          **/  
  205.         Array.prototype.unique = function(field){  
  206.             var arr = [];  
  207.   
  208.             var i = 0;  
  209.             for(; i < this.length; i++){  
  210.                 var val = field ? this[i][field] : this[i];  
  211.                 var index = this.lastIndexOf(val, field);  
  212.                 if(index == i)  
  213.                     arr.push(this[i]);  
  214.             }  
  215.   
  216.             return arr;  
  217.         }  
  218.   
  219.         /** 
  220.          * 扩展基础类 
  221.          * 数组最大值 
  222.          **/  
  223.         Array.prototype.max = function(field){  
  224.             var result = -1;  
  225.   
  226.             var i = 0;  
  227.             for(; i < this.length; i++){  
  228.                 var val = field ? this[i][field] : this[i];  
  229.                 if(val > result)  
  230.                     result = val;  
  231.             }  
  232.   
  233.             return result;  
  234.         }  
  235.   
  236.         /** 
  237.          * 扩展基础类 
  238.          * 数组最小值 
  239.          **/  
  240.         Array.prototype.min = function(field){  
  241.             var result = -1;  
  242.   
  243.             var i = 0;  
  244.             for(; i < this.length; i++){  
  245.                 var val = field ? this[i][field] : this[i];  
  246.                 if(val < result)  
  247.                     result = val;  
  248.             }  
  249.   
  250.             return result;  
  251.         }  
  252.   
  253.         /** 
  254.          * 扩展基础类 
  255.          * 日期格式化 
  256.          **/  
  257.         Date.prototype.format = function(pat){  
  258.             var year = this.getFullYear();  
  259.             var month = this.getMonth() + 1;  
  260.             var day = this.getDate();  
  261.             var hour = this.getHours();  
  262.             var minute = this.getMinutes();  
  263.             var second = this.getSeconds();  
  264.             // 两位补齐  
  265.             month = month > 9 ? month : "0" + month;  
  266.             day = day > 9 ? day : "0" + day;  
  267.             hour = hour > 9 ? hour : "0" + hour;  
  268.             minute = minute > 9 ? minute : "0" + minute;  
  269.             second = second > 9 ? second : "0" + second;  
  270.             if(!pat){  
  271.                 pat = "yyyy-MM-dd";  
  272.             }  
  273.             pat = pat.replace(/yyyy/g, year);  
  274.             pat = pat.replace(/MM/g, month);  
  275.             pat = pat.replace(/dd/g, day);  
  276.             pat = pat.replace(/HH/gi, hour);  
  277.             pat = pat.replace(/mm/g, minute);  
  278.             pat = pat.replace(/ss/g, second);  
  279.             return pat;  
  280.         }  
  281.   
  282.         // 减去时差的毫秒数(取决于使用的浏览器的locale设置)  
  283.         Date.prototype.getTime2 = function(){  
  284. //          return this.getTime();  
  285.             return this.getTime() - this.getTimezoneOffset() / 60 * 3600 * 1000;  
  286.         }  
  287.   
  288.         // 日期相差天数  
  289.         Date.prototype.diff = function(date){  
  290.             return Math.ceil((this - date) / (1000 * 60 * 60 * 24));  
  291.         }  
  292.   
  293.         // 日期加减计算  
  294.         Date.prototype.add = function(days){  
  295.             return new Date(this.getTime() + days * (1000 * 60 * 60 * 24));  
  296.         }  
  297.   
  298.         // 日期加减计算  
  299.         Date.prototype.addMonth = function(months){  
  300.             var day = this.getDate();  
  301.             var month = this.getMonth() + 1;  
  302.             var year = this.getFullYear();  
  303.             month += months;    
  304.             if(month > 12){  
  305.                 year += Math.floor(month / 12);  
  306.                 month = month % 12;  
  307.             }  
  308.             return Date.parse(month + '/' + day + '/' + year);  
  309.         }  
  310.   
  311.         // 解析字符串,以默认 pat = "yyyy-MM-dd"的格式,而不是MM/dd/yyyy  
  312.         Date.parse2 = function(str, pat){  
  313.             if(str == null || str == '')  
  314.                 return new Date();  
  315.             var rstr = str.replace(/(\d{4})([-\./])(\d{1,2})\2(\d{1,2})/, "$3/$4/$1");  
  316.             return new Date(Date.parse(rstr));  
  317.         }  
  318.   
  319.         // 解析字符串,json date obj  
  320.         // 减去时差的毫秒数(取决于使用的浏览器的locale设置)  
  321.         Date.parse3 = function(obj){  
  322. //          return new Date(obj.time);  
  323.             return new Date(obj.time - new Date().getTimezoneOffset() / 60 * 3600 * 1000);  
  324. //          var str = obj.year + '-' + (obj.month + 1) + '-' + obj.date + ' ' +   
  325. //              obj.hours + ':' + obj.minutes + ':' + obj.seconds;  
  326. //          return Date.parse2(str);  
  327.         }  

转载于:https://www.cnblogs.com/jing8100/archive/2012/08/08/2627630.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值