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 相关文章推荐
List the Codec Files on a Computer
Jun 18 Javascript
javascript concat数组累加 示例
Sep 03 Javascript
jQuery总体架构的理解分析
Mar 07 Javascript
JS将光标聚焦在文本最后的实现代码
Mar 28 Javascript
jquery的总体架构分析及实现示例详解
Nov 08 Javascript
浅谈jQuery异步对象(XMLHttpRequest)
Nov 17 Javascript
Javascript进制转换实例分析
May 14 Javascript
JavaScript中的定时器之Item23的合理使用
Oct 30 Javascript
angularjs实现猜数字大小功能
May 20 Javascript
JavaScript实现计数器基础方法
Oct 10 Javascript
在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法
Nov 28 Javascript
VUE 实现动态给对象增加属性,并触发视图更新操作示例
Nov 29 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
安健A254立体声随身听的分析与打磨
2021/03/02 无线电
使用PHP实现阻止用户上传成人照片或者裸照
2014/12/25 PHP
PHP使用pear自带的mail类库发邮件的方法
2015/07/08 PHP
php动态读取数据清除最右边距的方法
2017/04/12 PHP
PHP生成随机数的方法总结
2018/03/01 PHP
JavaScript Title、alt提示(Tips)实现源码解读
2010/12/12 Javascript
from表单多个按钮提交用onclick跳转不同action
2014/04/24 Javascript
深入分析escape()、encodeURI()、encodeURIComponent()的区别及示例
2014/08/04 Javascript
jquery地址栏链接与a标签链接匹配之特效代码总结
2015/08/24 Javascript
Jquery判断form表单数据是否变化
2016/03/30 Javascript
JavaScript知识点总结(十一)之js中的Object类详解
2016/05/31 Javascript
bootstrap与Jquery UI 按钮样式冲突的解决办法
2016/09/23 Javascript
浅析script标签中的defer与async属性
2016/11/30 Javascript
Bootstrap超大屏幕的实现代码
2017/03/22 Javascript
jquery实现楼层滚动效果
2018/01/01 jQuery
node实现基于token的身份验证
2018/04/09 Javascript
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
2018/09/25 Javascript
Vue 无限滚动加载指令实现方法
2019/05/28 Javascript
d3.js实现图形缩放平移
2019/12/19 Javascript
浅谈JavaScript中你可能不知道URL构造函数的属性
2020/07/13 Javascript
vue全局使用axios的操作
2020/09/08 Javascript
JavaScript快速调试的两个技巧
2020/11/04 Javascript
python 使用sys.stdin和fileinput读入标准输入的方法
2018/10/17 Python
Python 实例方法、类方法、静态方法的区别与作用
2019/08/14 Python
在keras中获取某一层上的feature map实例
2020/01/24 Python
如何用python处理excel表格
2020/06/09 Python
Python unittest基本使用方法代码实例
2020/06/29 Python
Python csv文件记录流程代码解析
2020/07/16 Python
使用HTML5的链接预取功能(link prefetching)给网站提速
2012/12/13 HTML / CSS
世界首屈一指的钓鱼用品商店:TackleDirect
2016/07/26 全球购物
办公室主任先进事迹
2014/01/18 职场文书
四年级科学教学反思
2014/02/10 职场文书
英文自荐信常用句子
2014/03/26 职场文书
走群众路线学习心得体会
2014/10/31 职场文书
学校食品安全责任书
2015/01/29 职场文书
装修公司工程部经理岗位职责
2015/04/09 职场文书