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 相关文章推荐
基于JavaScript实现继承机制之构造函数方法对象冒充的使用详解
May 07 Javascript
javascript限制用户只能输汉字中文的方法
Nov 20 Javascript
js实现异步循环实现代码
Feb 16 Javascript
基于JQuery的$.ajax方法进行异步请求导致页面闪烁的解决办法
May 10 Javascript
easy ui datagrid 从编辑框中获取值的方法
Feb 22 Javascript
ReactJs设置css样式的方法
Jun 08 Javascript
react native带索引的城市列表组件的实例代码
Aug 08 Javascript
JS实现的透明度渐变动画效果示例
Apr 28 Javascript
vue-router判断页面未登录自动跳转到登录页的方法示例
Nov 04 Javascript
vue.js实现的幻灯片功能示例
Jan 18 Javascript
Echarts实现多条折线可拖拽效果
Dec 19 Javascript
JavaScript实现模态对话框实例
Jan 13 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访问MYSQL数据库封装类(附函数说明)
2010/12/04 PHP
PHP静态文件生成类实例
2014/11/29 PHP
Laravel自动生成UUID,从建表到使用详解
2019/10/24 PHP
利用js 进行输入框自动匹配字符的小例子
2013/06/29 Javascript
javascript 中__proto__和prototype详解
2014/11/25 Javascript
实例讲解JavaScript中的this指向错误解决方法
2016/06/13 Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
2016/07/09 Javascript
Google Maps基础及实例解析
2016/08/06 Javascript
Angular 应用技巧总结
2016/09/14 Javascript
Node.js学习入门
2017/01/03 Javascript
js 开发之autocomplete=&quot;off&quot;在chrom中失效的解决办法
2017/09/28 Javascript
详解基于vue-cli优化的webpack配置
2017/11/06 Javascript
Angular实现的进度条功能示例
2018/02/18 Javascript
对vue里函数的调用顺序介绍
2018/03/17 Javascript
Taro集成Redux快速上手的方法示例
2018/06/21 Javascript
JavaScript实现数组全排列、去重及求最大值算法示例
2018/07/30 Javascript
使用微信SDK自定义分享的方法
2019/07/03 Javascript
vue中实现Monaco Editor自定义提示功能
2019/07/05 Javascript
微信小程序使用自定义组件导航实现当前页面高亮
2020/01/02 Javascript
js实现拾色器插件(ColorPicker)
2020/05/21 Javascript
django开发教程之利用缓存文件进行页面缓存的方法
2017/11/10 Python
python opencv minAreaRect 生成最小外接矩形的方法
2019/07/01 Python
python爬虫 2019中国好声音评论爬取过程解析
2019/08/26 Python
python模块hashlib(加密服务)知识点讲解
2019/11/25 Python
Python 实现OpenCV格式和PIL.Image格式互转
2020/01/09 Python
关于Django Models CharField 参数说明
2020/03/31 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
2020/06/28 Python
Python3如何使用range函数替代xrange函数
2020/10/05 Python
DJI美国:消费类无人机领域的领导者
2018/04/27 全球购物
世界各地的旅游、观光和活动:Isango!
2019/10/29 全球购物
Ruby如何定义一个类
2012/10/08 面试题
大型晚会策划方案
2014/02/06 职场文书
质量月口号
2014/06/20 职场文书
运动会广播稿200字
2014/10/18 职场文书
乡镇防汛工作汇报
2014/10/28 职场文书
2014年维修电工工作总结
2014/11/20 职场文书