文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

JavaScript常用字符串与数组扩展函数有哪些

2023-07-04 10:24

关注

本文小编为大家详细介绍“JavaScript常用字符串与数组扩展函数有哪些”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaScript常用字符串与数组扩展函数有哪些”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。

String对象的扩展函数:

String.prototype.trim = function() {   return this.replace(/^\s+|\s+$/g,""); } String.prototype.ltrim = function() {   return this.replace(/^\s+/g,""); } String.prototype.rtrim = function() {   return this.replace(/\s+$/g,""); } String.prototype.splitAndTrim = function($delimiter, $limit) {   var $ss = this.split($delimiter, $limit);   for(var $i=0; $i<$ss.length; $i++)     $ss[$i] = $ss[$i].trim();    return $ss; } String.prototype.htmlEntities = function () {   return this.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>'); } String.prototype.stripTags = function () {   return this.replace(/<([^>]+)>/g,''); } String.prototype.toArray = function() {   return this.split(''); } String.prototype.toIntArray = function() {   var returnArray = [];   for (var i=0; i<this.length; i++) {    returnArray.push(this.charCodeAt(i));   }   return returnArray; } String.prototype.replaceAll = function($old, $snew){     return this.replace(new RegExp($old,"gm"),$snew);   }

变量替换

var a = "I Love {0}, and You Love {1},Where are {0}!";a.format("You","Me"); String.prototype.format = function(){   var args = arguments;   return this.replace(/\{(\d+)\}/g,function(m,i,o,n){     return args[i];   }); }

在字符串末尾追加字符串 

String.prototype.append = function($str){   return this.concat($str); }

删除指定索引位置的字符,索引无效将不删除任何字符 

String.prototype.deleteCharAt = function($sIndex){   if($sIndex<0 || $sIndex>=this.length){     return this.valueOf();   }else if($sIndex==0){     return this.substring(1,this.length);   }else if($sIndex==this.length-1){     return this.substring(0,this.length-1);   }else{     return this.substring(0,$sIndex)+this.substring($sIndex+1);   } }

删除指定索引间的字符串.$sIndex和$eIndex所在的字符不被删除!依赖deleteCharAt  

String.prototype.deleteString = function($sIndex, $eIndex){   if($sIndex==$eIndex){     return this.deleteCharAt($sIndex);   }else{     if($sIndex>$eIndex){       var tIndex=$eIndex;       $eIndex=$sIndex;       $sIndex=tIndex;     }     if($sIndex<0)$sIndex=0;     if($eIndex>this.length-1)$eIndex=this.length-1;     return this.substring(0,$sIndex+1)+this.substring($eIndex,this.length);   } }

检查字符串是否以某个字符串(str)结尾 

String.prototype.endsWith = function($str){   return this.substr(this.length - $str.length) == $str; }

检查该字符串是否以某个字符串开始 

String.prototype.startsWith = function(str){   return this.substr(0, str.length) == str; }

比较两个字符串是否相等,不区分大小写! 

String.prototype.equalsIgnoreCase = function($str){   if(this.length!=$str.length){     return false;   }else{     var tmp1=this.toLowerCase();     var tmp2=$str.toLowerCase();     return tmp1==tmp2;   } }

将指定的字符串插入到指定的位置后面!索引无效将直接追加到字符串的末尾 

String.prototype.insert = function($ofset, $str){   if($ofset<0 || $ofset>=this.length-1){     return this.concat($str);   }   return this.substring(0,$ofset)+$str+this.substring($ofset+1); }

将指定的位置的字符设置为另外指定的字符或字符串.索引无效将直接返回不做任何处理!  

String.prototype.setCharAt = function($ofset, $str){   if($ofset<0 || $ofset>=this.length-1){     return this.valueOf();   }   return this.substring(0,$ofset)+$str+this.substring($ofset+1); } String.prototype.replaceLen = function(start, len, replaced) {    if(!len)      return this;     if(start >= this.length)      return this;     var returnSeg = '';    var returnSeg2 = '';    var i = 0;    for (; i < this.length; i++){      var c = this.charAt(i);      if(i < start)        returnSeg += c;       if(i >= start + len)        returnSeg2 += c;    }     return returnSeg + replaced + returnSeg2;  }

扩展基础类: 
替换字符,这个在替换填入比较有用,比如***天***小时 替换为 <input />天<input />小时  
 

String.prototype.replaceChar = function(target, replaced, start) {    if(!target)      return this;    if(!start)      start = 0;     var returnVal = this.substring(0, start);    var index = 0;    for (var i = start; i < this.length; i++) {      var c = this.charAt(i);      target = typeof target == 'function' ? target.call(this, index) : target;      if (c == target) {        returnVal += typeof replaced == 'function' ? replaced.call(this, index) : replaced;        while (i < this.length - 1 && this.charAt(i + 1) == c) {          i++;        }        index++;      }else{        returnVal += c;      }    }     return returnVal;  }

将该字符串反序排列 

String.prototype.reverse = function(){   var str="";   for(var i=this.length-1;i>=0;i--){     str=str.concat(this.charAt(i));   }   return str; }

计算长度,每个汉字占两个长度,英文字符每个占一个长度 

String.prototype.ucLength = function(){   var len = 0;   for(var i=0;i<this.length;i++){     if(this.charCodeAt(i)>255)len+=2;     else len++;   }   return len; }

在字符串的左边填充一些特定的字符 

String.prototype.lpad = function(len, s) {   var a = new Array(this);   var n = (len - this.length);   for ( var i = 0; i < n; i++) {     a.unshift(s);   }   return a.join(""); }

在字符串的右边填充一些特定的字符 

String.prototype.rpad = function(len, s) {   var a = new Array(this);   var n = (len - this.length);   for ( var i = 0; i < n; i++) {     a.push(s);   }   return a.join(""); }

把字符串的首字母转化为大写 

String.prototype.ucwords = function() {   return this.substring(0,1).toUpperCase().concat(this.substring(1)); } String.prototype.contains = function($str) {   return this.indexOf($str) > -1 ? true : false; }

将格式为2008-04-02 10:08:44的字符串转成日期(String对象的值必须为: 2008-04-02 10:08:44) 

String.prototype.toDate = function(){   var str = this.replace(/-/g,"/");   return (new Date(str)); }

将原来用字符串表示的十进数转成十进制浮点数: precision为精度 

String.prototype.toFloat = function(precision){   precision = precision || 2;   return parseFloat(this,10).toFixed(precision); }

将原来用字符串表示的十进数转成十进制整数 

String.prototype.toInt = function(){   return parseInt(this,10).toString(); }

将两个原来用字符串表示的十进数相加后当作字串返回 : addend为加数 

String.prototype.add = function(addend){   var sum = parseFloat(this,10) + parseFloat(addend,10);   return sum+""; }

十进制转其他进制代码如下nextScale为进制 如2,8,16 

String.prototype.shiftScale = function(nextScale){   return parseFloat(this).toString(nextScale); }


各进制互相转换 :
this对象必须是整数
@param preScale 原是是几进制数
@param nextScale  要转换成几进制数 
 

String.prototype.scaleShift = function(preScale,nextScale){   return parseInt(this,preScale).toString(nextScale); }

全角2半角 document.write("ABC 123,我们都是好朋友"); 
String.prototype.dbc2sbc = function (){ 
    return this.replace(/[\uff01-\uff5e]/g,function(a){return String.fromCharCode(a.charCodeAt(0)-65248);}).replace(/\u3000/g," "); 


Array扩展函数:

var isNumeric = function(x) {   // returns true if x is numeric and false if it is not.   var RegExp = /^(-)?(\d*)(\.?)(\d*)$/;    return String(x).match(RegExp); } var myArray = [1,'two',3,'four',5,'six',7,'eight',9,'ten']; var oddArray=myArray.filter(isNumeric); // outputs: 1,3,5,7,9 var oddArray=myArray.some(isNumeric); // outputs: true var oddArray=myArray.every(isNumeric); // outputs: false var printArray =function(x, idx){   document.writeln('['+idx+'] = '+x); } myArray.forEach(printArray);// outputs: [0] = 1 [1] = two [2] = 3 [3] = four [4] = 5 myArray.remove(9); document.writeln(myArray);   if (!Array.prototype.every)  {  Array.prototype.every = function(fun )  {   var len = this.length;   if (typeof fun != "function")    throw new TypeError();    var thisp = arguments[1];   for (var i = 0; i < len; i++)   {    if (i in this &&      !fun.call(thisp, this[i], i, this))     return false;   }    return true;  }; } if (!Array.prototype.filter) {  Array.prototype.filter = function(fun )  {   var len = this.length;   if (typeof fun != "function")    throw new TypeError();    var res = new Array();   var thisp = arguments[1];   for (var i = 0; i < len; i++)   {    if (i in this)    {     var val = this[i]; // in case fun mutates this     if (fun.call(thisp, val, i, this))      res.push(val);    }   }    return res;  }; } if (!Array.prototype.forEach) {  Array.prototype.forEach = function(fun )  {   var len = this.length;   if (typeof fun != "function")    throw new TypeError();    var thisp = arguments[1];   for (var i = 0; i < len; i++)   {    if (i in this)     fun.call(thisp, this[i], i, this);   }  }; } if (!Array.prototype.map) {  Array.prototype.map = function(fun )  {   var len = this.length;   if (typeof fun != "function")    throw new TypeError();    var res = new Array(len);   var thisp = arguments[1];   for (var i = 0; i < len; i++)   {    if (i in this)     res[i] = fun.call(thisp, this[i], i, this);   }    return res;  }; } if (!Array.prototype.some) {  Array.prototype.some = function(fun )  {   var len = this.length;   if (typeof fun != "function")    throw new TypeError();    var thisp = arguments[1];   for (var i = 0; i < len; i++)   {    if (i in this &&      fun.call(thisp, this[i], i, this))     return true;   }    return false;  }; } Array.prototype.sortNum = function() {   return this.sort( function (a,b) { return a-b; } ); } <!-- var tmp = [5,9,12,18,56,1,10,42,'blue',30, 7,97,53,33,30,35,27,30,'35','Ball', 'bubble']; var thirty=tmp.find(30);       // Returns 9, 14, 17 var thirtyfive=tmp.find('35');    // Returns 18 var thirtyfive=tmp.find(35);     // Returns 15 var haveBlue=tmp.find('blue');    // Returns 8 var notFound=tmp.find('not there!'); // Returns false var regexp1=tmp.find(/^b/);     // returns 8,20  (first letter starts with b) var regexp1=tmp.find(/^b/i);     // returns 8,19,20 (same as above but ignore case) --> Array.prototype.find = function(searchStr) {  var returnArray = false;  for (i=0; i<this.length; i++) {   if (typeof(searchStr) == 'function') {    if (searchStr.test(this[i])) {     if (!returnArray) { returnArray = [] }     returnArray.push(i);    }   } else {    if (this[i]===searchStr) {     if (!returnArray) { returnArray = [] }     returnArray.push(i);    }   }  }  return returnArray; }

随机改变数组的排序 

Array.prototype.shuffle = function (){     for(var rnd, tmp, i=this.length; i; rnd=parseInt(Math.random()*i), tmp=this[--i], this[i]=this[rnd], this[rnd]=tmp);    return this; }   <!--var myArray = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]; var yourArray = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]; document.writeln(myArray.compare(yourArray)); // outputs: true;--> Array.prototype.compare = function(testArr) {   if (this.length != testArr.length) return false;   for (var i = 0; i < testArr.length; i++) {     if (this[i].compare) {        if (!this[i].compare(testArr[i])) return false;     }     if (this[i] !== testArr[i]) return false;   }   return true; }

去掉数组中重复的值var a = new Array("5","7","7"); a.unique(); 

Array.prototype.unique = function() {   var data = this || [];   var a = {}; //声明一个对象,javascript的对象可以当哈希表用   for (var i = 0; i < data.length; i++) {     a[data[i]] = true; //设置标记,把数组的值当下标,这样就可以去掉重复的值   }   data.length = 0;       for (var i in a) { //遍历对象,把已标记的还原成数组     this[data.length] = i;    }    return data; }  Array.prototype.addAll = function($array) {   if($array == null || $array.length == 0)     return;    for(var $i=0; $i<$array.length; $i++)     this.push($array[$i]); }  Array.prototype.contains = function($value) {   for(var $i=0; $i<this.length; $i++)   {     var $element = this[$i];     if($element == $value)       return true;   }    return false; }  Array.prototype.indexOf = function($value) {   for(var $i=0; $i<this.length; $i++)   {     if(this[$i] == $value)       return $i;   }    return -1; } if (!Array.prototype.lastIndexOf) {  Array.prototype.lastIndexOf = function(elt )  {   var len = this.length;    var from = Number(arguments[1]);   if (isNaN(from))   {    from = len - 1;   }   else   {    from = (from < 0)       ? Math.ceil(from)       : Math.floor(from);    if (from < 0)     from += len;    else if (from >= len)     from = len - 1;   }    for (; from > -1; from--)   {    if (from in this &&      this[from] === elt)     return from;   }   return -1;  }; } Array.prototype.insertAt = function($value, $index) {   if($index < 0)     this.unshift($value);   else if($index >= this.length)     this.push($value);   else     this.splice($index, 0, $value); }


根据数组的下标来删除元素  
 

Array.prototype.removeByIndex=function($n) {     if($n<0){ //如果n<0,则不进行任何操作。      return this;    }else{      return this.slice(0,$n).concat(this.slice($n+1,this.length));    }  }

依赖indexOf  

Array.prototype.remove = function($value) {   var $index = this.indexOf($value);    if($index != -1)     this.splice($index, 1); }  Array.prototype.removeAll = function() {   while(this.length > 0)     this.pop(); }  Array.prototype.replace = function($oldValue, $newValue) {   for(var $i=0; $i<this.length; $i++)   {     if(this[$i] == $oldValue)     {       this[$i] = $newValue;       return;     }   } }  Array.prototype.swap = function($a, $b) {   if($a == $b)     return;    var $tmp = this[$a];   this[$a] = this[$b];   this[$b] = $tmp; } Array.prototype.max = function() {    return Math.max.apply({}, this);  }  Array.prototype.min = function() {    return Math.min.apply({}, this);  }  Array.prototype.splice = function(start, delLen, item){   var len =this.length;   start = start<0?0:start>len?len:start?start:0;   delLen=delLen<0?0:delLen>len?len:delLen?delLen:len;        var arr =[],res=[];   var iarr=0,ires=0,i=0;      for(i=0;i<len;i++){     if(i<start|| ires>=delLen)  arr[iarr++]=this[i];     else {       res[ires++]=this[i];       if(item&&ires==delLen){         arr[iarr++]=item;       }     }     }   if(item&&ires<delLen) arr[iarr]=item;       for(var i=0;i<arr.length;i++){     this[i]=arr[i];   }   this.length=arr.length;   return res; } Array.prototype.shift = function(){ if(!this) return[];return this.splice(0,1)[0];}

 
分开添加,关键字shallow copy,如果遇到数组,复制数组中的元素 

Array.prototype.concat = function(){   var i=0;   while(i<arguments.length){     if(typeof arguments[i] === 'object'&&typeof arguments[i].splice ==='function' &&!arguments[i].propertyIsEnumerable('length')){     // NOT SHALLOW COPY BELOW     // Array.prototype.concat.apply(this,arguments[i++]);       var j=0;       while(j<arguments[i].length) this.splice(this.length,0,arguments[i][j++]);       i++;     } else{       this[this.length]=arguments[i++];     }   }   return this; }  Array.prototype.join = function(separator){   var i=0,str="";   while(i<this.length) str+=this[i++]+separator;   return str; }  Array.prototype.pop = function() { return this.splice(this.length-1,1)[0];}  Array.prototype.push = function(){    Array.prototype.splice.apply(this,     [this.length,0].concat(Array.prototype.slice.apply(arguments))); //这里没有直接处理参数,而是复制了一下   return this.length; } Array.prototype.reverse = function(){   for(var i=0;i<this.length/2;i++){     var temp = this[i];     this[i]= this[this.length-1-i];     this[this.length-1-i] = temp;   }   return this; } Array.prototype.slice = function(start, end){   var len =this.length;   start=start<0?start+=len:start?start:0;   end =end<0?end+=len:end>len?len:end?end:len;          var i=start;   var res = [];   while(i<end){     res.push(this[i++]);   }   return res;  } //arr.unshift(ele1,ele2,ele3....) Array.prototype.unshift =function(){   Array.prototype.splice.apply(this,[0,0].concat(Array.prototype.slice.apply(this,arguments))); }

读到这里,这篇“JavaScript常用字符串与数组扩展函数有哪些”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯