0

0

JavaScript常用字符串与数组扩展函数小结_基础知识

php中文网

php中文网

发布时间:2016-05-16 15:04:14

|

1908人浏览过

|

来源于php中文网

原创

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,'>'); 
} 
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

变量替换

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;  
} 

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

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;i255)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(""); 
} 

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

千鹿AI
千鹿AI

千鹿AI是一个全面的AI图像处理平台,提供AI生图、AI扩图和AI去背景等多种智能工具。

下载
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 /*, thisp*/) 
 { 
  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 /*, thisp*/) 
 { 
  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 /*, thisp*/) 
 { 
  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 /*, thisp*/) 
 { 
  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 /*, thisp*/) 
 { 
  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; } ); 
} 
 
Array.prototype.find = function(searchStr) { 
 var returnArray = false; 
 for (i=0; i

随机改变数组的排序 

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; 
}   
 
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= 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; $ilen?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=delLen)  arr[iarr++]=this[i]; 
    else { 
      res[ires++]=this[i]; 
      if(item&&ires==delLen){ 
        arr[iarr++]=item; 
      } 
    }   
  } 
  if(item&&ires

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

Array.prototype.concat = function(){ 
  var i=0; 
  while(ilen?len:end?end:len; 
       
  var i=start; 
  var res = []; 
  while(i

相关文章

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python 序列化
Python 序列化

本专题整合了python序列化、反序列化相关内容,阅读专题下面的文章了解更多详细内容。

0

2026.02.02

AO3官网入口与中文阅读设置 AO3网页版使用与访问
AO3官网入口与中文阅读设置 AO3网页版使用与访问

本专题围绕 Archive of Our Own(AO3)官网入口展开,系统整理 AO3 最新可用官网地址、网页版访问方式、正确打开链接的方法,并详细讲解 AO3 中文界面设置、阅读语言切换及基础使用流程,帮助用户稳定访问 AO3 官网,高效完成中文阅读与作品浏览。

91

2026.02.02

主流快递单号查询入口 实时物流进度一站式追踪专题
主流快递单号查询入口 实时物流进度一站式追踪专题

本专题聚合极兔快递、京东快递、中通快递、圆通快递、韵达快递等主流物流平台的单号查询与运单追踪内容,重点解决单号查询、手机号查物流、官网入口直达、包裹进度实时追踪等高频问题,帮助用户快速获取最新物流状态,提升查件效率与使用体验。

27

2026.02.02

Golang WebAssembly(WASM)开发入门
Golang WebAssembly(WASM)开发入门

本专题系统讲解 Golang 在 WebAssembly(WASM)开发中的实践方法,涵盖 WASM 基础原理、Go 编译到 WASM 的流程、与 JavaScript 的交互方式、性能与体积优化,以及典型应用场景(如前端计算、跨平台模块)。帮助开发者掌握 Go 在新一代 Web 技术栈中的应用能力。

11

2026.02.02

PHP Swoole 高性能服务开发
PHP Swoole 高性能服务开发

本专题聚焦 PHP Swoole 扩展在高性能服务端开发中的应用,系统讲解协程模型、异步IO、TCP/HTTP/WebSocket服务器、进程与任务管理、常驻内存架构设计。通过实战案例,帮助开发者掌握 使用 PHP 构建高并发、低延迟服务端应用的工程化能力。

5

2026.02.02

Java JNI 与本地代码交互实战
Java JNI 与本地代码交互实战

本专题系统讲解 Java 通过 JNI 调用 C/C++ 本地代码的核心机制,涵盖 JNI 基本原理、数据类型映射、内存管理、异常处理、性能优化策略以及典型应用场景(如高性能计算、底层库封装)。通过实战示例,帮助开发者掌握 Java 与本地代码混合开发的完整流程。

5

2026.02.02

go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

62

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

55

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

27

2026.01.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
React 教程
React 教程

共58课时 | 4.5万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 2.7万人学习

Bootstrap 5教程
Bootstrap 5教程

共46课时 | 3.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号