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 相关文章推荐
一个可以兼容IE FF的加为首页与加入收藏实现代码
Nov 02 Javascript
JS获取键盘上任意按键的值(实例代码)
Nov 12 Javascript
js清空form表单中的内容示例
May 20 Javascript
JavaScript使用setTimeout实现延迟弹出警告框的方法
Apr 07 Javascript
js实现类似MSN提示的页面效果代码分享
Aug 24 Javascript
极力推荐10个短小实用的JavaScript代码段
Aug 03 Javascript
用headjs来管理和加载js 提高网站加载速度
Nov 29 Javascript
Centos6.8下Node.js安装教程
May 12 Javascript
Django中使用jquery的ajax进行数据交互的实例代码
Oct 15 jQuery
vue2.0组件之间传值、通信的多种方式(干货)
Feb 10 Javascript
用vuex写了一个购物车H5页面的示例代码
Dec 04 Javascript
学习RxJS之JavaScript框架Cycle.js
Jun 17 Javascript
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与SQL注入攻击[三]
2007/04/17 PHP
phpMyAdmin下载、安装和使用入门教程
2007/05/31 PHP
PHP远程连接MYSQL数据库非常慢的解决方法
2008/07/05 PHP
Laravel实现通过blade模板引擎渲染视图
2019/10/25 PHP
jquery多选项卡效果实例代码(附效果图)
2013/03/23 Javascript
JQuery创建DOM节点的方法
2015/06/11 Javascript
jquery获取复选框的值的简单实例
2016/05/26 Javascript
js 自带的 map() 方法全面了解
2016/08/16 Javascript
微信小程序 图片边框解决方法
2017/01/16 Javascript
vue页面跳转后返回原页面初始位置方法
2018/02/11 Javascript
Node批量爬取头条视频并保存方法
2018/09/20 Javascript
javascript实现手动点赞效果
2019/04/09 Javascript
[01:05:40]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第三场
2014/05/24 DOTA
python实现DNS正向查询、反向查询的例子
2014/04/25 Python
Python读取MRI并显示为灰度图像实例代码
2018/01/03 Python
Python线性拟合实现函数与用法示例
2018/12/13 Python
django多个APP的urls设置方法(views重复问题解决)
2019/07/19 Python
python列表推导式操作解析
2019/11/26 Python
Python使用jupyter notebook查看ipynb文件过程解析
2020/06/02 Python
Python进行统计建模
2020/08/10 Python
Pytorch1.5.1版本安装的方法步骤
2020/12/31 Python
CSS3中使用RGBa来调节透明度的教程
2016/05/09 HTML / CSS
html5 touch事件实现触屏页面上下滑动(一)
2016/03/10 HTML / CSS
浅谈基于Canvas的手绘风格图形库Rough.js
2018/03/19 HTML / CSS
关联、聚合(Aggregation)以及组合(Composition)的区别
2012/02/29 面试题
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
教学大赛获奖感言
2014/01/15 职场文书
工程质量月活动方案
2014/02/19 职场文书
党的群众路线教育实践活动心得体会
2014/03/03 职场文书
施工工地安全标语
2014/06/07 职场文书
营销计划书
2015/01/17 职场文书
团委副书记工作总结
2015/08/14 职场文书
2016年小学“公民道德宣传日”活动总结
2016/04/01 职场文书
mysql 联合索引生效的条件及索引失效的条件
2021/11/20 MySQL
golang用type-switch判断interface的实际存储类型
2022/04/14 Golang
python中使用redis用法详解
2022/12/24 Redis