js中位数不足自动补位扩展padLeft、padRight实现代码


Posted in Javascript onApril 06, 2020

方法一、自定义函数实现,不方便自定义调用

function FillZero(p) {
return new Array(3 - (p + '').length + 1).join('0') + p;
}
FillZero(6); //输出006

方法二、String方法一扩展(C#中PadLeft、PadRight)

String.prototype.PadLeft = function (len, charStr) {
var s = this + '';
return new Array(len - s.length + 1).join(charStr || '') + s;
}
String.prototype.PadRight = function (len, charStr) {
var s = this + '';
return s + new Array(len - s.length + 1).join(charStr || '');
}
var p = 6;
p.toString().PadLeft(3, '0'); //输出006
p.toString().PadRight(3, '0'); //输出600

方法三、原理同方法二

<script type="text/javascript">
String.prototype.pad= function (pos,len,padStr) {
 var padStrs = new Array(len).join(padStr,'');
 return pos ? (padStrs + this.toString()).substr(0-len):(this.toString() + padStrs).substr(0,len);
}
String.prototype.lpad = function(len,padStr){
	return this.pad(1,len,padStr);
}
String.prototype.rpad = function(len,padStr){
	return this.pad(0,len,padStr);
}
String.prototype.padLeft = String.prototype.lpad;
String.prototype.padRight = String.prototype.rpad;
var str="6";
console.log(str.lpad(2,"0"));
console.log(str.padLeft(2,"0"));
</script>

代码四、

String.prototype.padLeft = function (padChar, width) {
 var ret = this;
 while (ret.length < width) {
  if (ret.length + padChar.length < width) {
   ret = padChar + ret;
  }
  else {
   ret = padChar.substring(0, width - ret.length) + ret;
  }
 }
 return ret;
};

String.prototype.padRight = function (padChar, width) {
 var ret = this;
 while (ret.length < width) {
  if (ret.length + padChar.length < width) {
   ret += padChar;
  }
  else {
   ret += padChar.substring(0, width - ret.length);
  }
 }
 return ret;
};

下面是其他网友的补充

javascript-leftpad方法

原由是微博上出的一则leftpad方法被吐槽的事。

原方法是通过循环挨个拼接字符串的方式,所以效率差了点(会产生N多string对象,导致对象回收慢)

类似

for(i=0;i<cnt;i++){

str=pad+str;

}

改进如下:

//cache
var padding1="00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000";
var padding2="                         ";
 function leftpad(str,length,useSpace){
 var padding = padding1;
 if(useSpace){
 padding = padding2;
 }
 
 
 var cnt = length-str.length;
 
 if(cnt<=0) return str;
 if(cnt<=200) return padding.substring(0,cnt)+str;
 
 
 str=padding+str; 
 return leftpad(str,length,ch); 
 }

思路:

1.减少string对象的生成,所以尽量减少字符串拼接的次数

2.降低时间复杂度

以上就是js中位数不足自动补位扩展padLeft、padRight实现代码的详细内容,更多关于js自动补位 padLeft、padRight的资料请关注三水点靠木其它相关文章!

Javascript 相关文章推荐
js 方法实现返回多个数据的代码
Apr 30 Javascript
分享JavaScript获取网页关闭与取消关闭的事件
Dec 13 Javascript
用js判断输入是否为中文的函数
Mar 10 Javascript
javaScript知识点总结(必看篇)
Jun 10 Javascript
基于jQuery实现照片墙自动播放特效
Jan 12 Javascript
jquery获取select,option所有的value和text的实例
Mar 06 Javascript
解决微信二次分享不显示摘要和图片的问题
Aug 18 Javascript
jquery 一键复制到剪切板的实例
Sep 20 jQuery
浅谈vue项目如何打包扔向服务器
May 08 Javascript
jQuery实现ajax回调函数带入参数的方法示例
Jun 26 jQuery
jQuery时间戳和日期相互转换操作示例
Dec 07 jQuery
基于vue+echarts数据可视化大屏展示的实现
Dec 25 Vue.js
jquery实现两个div中的元素相互拖动的方法分析
Apr 05 #jQuery
js实现登录时记住密码的方法分析
Apr 05 #Javascript
Vue插件之滑动验证码用法详解
Apr 05 #Javascript
解决node终端下运行js文件不支持ES6语法
Apr 04 #Javascript
jQuery 图片查看器插件 Viewer.js用法简单示例
Apr 04 #jQuery
jQuery实现鼠标放置名字上显示详细内容气泡提示框效果的方法分析
Apr 04 #jQuery
vue中使用v-for时为什么不能用index作为key
Apr 04 #Javascript
You might like
特转载一高手总结PHP学习资源和链接.
2006/12/05 PHP
Zend Studio for Eclipse的java.lang.NullPointerException错误的解决方法
2008/12/06 PHP
php使用正则过滤js脚本代码实例
2014/05/10 PHP
Zend Framework教程之Zend_Db_Table用法详解
2016/03/21 PHP
用Div仿showModalDialog模式菜单的效果的代码
2007/03/05 Javascript
使用js修改客户端注册表的方法
2013/08/09 Javascript
深入学习jQuery Validate表单验证
2016/01/18 Javascript
JavaScript希尔排序、快速排序、归并排序算法
2016/05/08 Javascript
Angular2表单自定义验证器的实现
2016/10/19 Javascript
NodeJS和BootStrap分页效果的实现代码
2016/11/07 NodeJs
详解JavaScript中的属性和特性
2016/12/08 Javascript
Javascript之深入浅出prototype
2017/02/06 Javascript
Javascript中的getter和setter初识
2017/08/17 Javascript
JS实现的3des+base64加密解密算法完整示例
2018/05/18 Javascript
纯JS实现可用于页码更换的飞页特效示例
2018/05/21 Javascript
cdn模式下vue的基本用法详解
2018/10/07 Javascript
jQuery实现数字自动增加或者减少的动画效果示例
2018/12/11 jQuery
纯异步nodejs文件夹(目录)复制功能
2019/09/03 NodeJs
视觉直观感受若干常用排序算法
2017/04/13 Python
Python函数参数操作详解
2018/08/03 Python
实例详解Python模块decimal
2019/06/26 Python
Python爬虫:将headers请求头字符串转为字典的方法
2019/08/21 Python
python能做什么 python的含义
2019/10/12 Python
css3 旋转按钮 使用CSS3创建一个旋转可变色按钮
2012/12/31 HTML / CSS
CSS3绘制不规则图形的一些方法示例
2015/11/07 HTML / CSS
英国最大的百货公司:Harrods
2016/08/18 全球购物
德国汽车零件和汽车配件网上商店:kfzteile24
2018/11/14 全球购物
厨师岗位职责
2013/11/12 职场文书
中学教师岗位职责
2013/11/26 职场文书
简历的自荐信
2013/12/19 职场文书
不假外出检讨书
2014/01/27 职场文书
家长会演讲稿
2014/04/26 职场文书
关于青春的演讲稿500字
2014/08/22 职场文书
观看信仰心得体会
2014/09/04 职场文书
社区工作者个人总结
2015/02/28 职场文书
解决ObjectMapper.convertValue() 遇到的一些问题
2021/06/30 Java/Android