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 相关文章推荐
锋利的jQuery 第三章章节总结的例子
Mar 23 Javascript
JS实现简单的顶部定时关闭层效果
Jun 15 Javascript
javascript实现手机震动API代码
Aug 05 Javascript
阻止表单提交按钮多次提交的完美解决方法
May 16 Javascript
javascript中的深复制详解及实例分析
Dec 29 Javascript
Angular2库初探
Mar 01 Javascript
Easyui ueditor 整合解决不能编辑的问题(推荐)
Jun 25 Javascript
微信小程序发送短信验证码完整实例
Jan 07 Javascript
详解vue引入子组件方法
Feb 12 Javascript
Vue中computed、methods与watch的区别总结
Apr 10 Javascript
基于axios 的responseType类型的设置方法
Oct 29 Javascript
JS获取当前时间戳方法解析
Aug 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
php中static静态变量的使用方法详解
2010/06/04 PHP
PHP文件读写操作之文件写入代码
2011/01/13 PHP
非常好用的Zend Framework分页类
2014/06/25 PHP
jquery tools之tooltip
2009/07/25 Javascript
基于jquery的修改当前TAB显示标题的代码
2010/12/11 Javascript
导航跟随滚动条置顶移动示例代码
2013/09/11 Javascript
javascript仿php的print_r函数输出json数据
2013/09/13 Javascript
jQuery 隐藏和显示 input 默认值示例
2014/06/03 Javascript
jQuery实现文件上传进度条特效
2015/08/12 Javascript
使用微信内置浏览器点击下拉框出现页面乱跳转现象(iphone),该怎么办
2016/01/04 Javascript
使用JavaScript脚本判断页面是否在微信中被打开
2016/03/06 Javascript
js如何准确获取当前页面url网址信息
2020/09/13 Javascript
JS实现六位字符密码输入器功能
2016/08/19 Javascript
Vue.js每天必学之过渡与动画
2016/09/06 Javascript
AngularJS学习第二篇 AngularJS依赖注入
2017/02/13 Javascript
浅谈Angular2 ng-content 指令在组件中嵌入内容
2017/08/18 Javascript
vue spa应用中的路由缓存问题与解决方案
2019/05/31 Javascript
jQuery内容选择器与表单选择器实例分析
2019/06/28 jQuery
在vue中实现某一些路由页面隐藏导航栏的功能操作
2020/09/21 Javascript
python调用java的Webservice示例
2014/03/10 Python
对Xpath 获取子标签下所有文本的方法详解
2019/01/02 Python
美国猫狗药物和用品网站:PetCareRx
2017/01/05 全球购物
香港永安旅游网:Wing On Travel
2017/04/10 全球购物
New Balance法国官方网站:购买鞋子和服装
2019/09/01 全球购物
华为消费者德国官方网站:HUAWEI德国
2020/11/03 全球购物
店长岗位的工作内容
2013/11/12 职场文书
美德好少年事迹材料
2014/01/19 职场文书
爱心捐助倡议书
2014/05/19 职场文书
机械工程学院大学生求职信
2014/05/25 职场文书
2015年宣传部部长竞选演讲稿
2014/11/28 职场文书
2014年科协工作总结
2014/12/09 职场文书
2015年秘书个人工作总结
2015/04/25 职场文书
创业计划书之便利店
2019/09/05 职场文书
浅谈JS和Nodejs中的事件驱动
2021/05/05 NodeJs
MySQL如何快速创建800w条测试数据表
2022/03/17 MySQL
Python docx库删除复制paragraph及行高设置图片插入示例
2022/07/23 Python