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实现的让超出显示范围外的导航自动固定屏幕最顶上
Sep 22 Javascript
事件冒泡是什么如何用jquery阻止事件冒泡
Mar 20 Javascript
简单谈谈jQuery(function(){})与(function(){})(jQuery)
Dec 19 Javascript
js实现可得到不同颜色值的颜色选择器实例
Feb 28 Javascript
JS实现Fisheye效果动感放大菜单代码
Oct 21 Javascript
javascript如何写热点图
Dec 08 Javascript
关于vue.js弹窗组件的知识点总结
Sep 11 Javascript
Vue2 SSR渲染根据不同页面修改 meta
Nov 20 Javascript
详解各版本React路由的跳转的方法
May 10 Javascript
Vue2.4+新增属性.sync、$attrs、$listeners的具体使用
Mar 08 Javascript
微信小程序实现自定义底部导航
Nov 18 Javascript
mustache.js实现首页元件动态渲染的示例代码
Dec 28 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
对javascript和select部件的结合运用
2006/10/09 PHP
Referer原理与图片防盗链实现方法详解
2019/07/03 PHP
js函数般调用正则
2008/04/08 Javascript
javascript 清空form表单中某种元素的值
2009/12/26 Javascript
IE6 fixed的完美解决方案
2011/03/31 Javascript
jquery DIV撑大让滚动条滚到最底部代码
2013/06/06 Javascript
使用javascript实现ListBox左右全选,单选,多选,全请
2013/11/07 Javascript
简单选项卡 js和jquery制作方法分享
2014/02/26 Javascript
创建你的第一个AngularJS应用的方法
2015/06/16 Javascript
浅谈Vue的基本应用
2016/12/27 Javascript
老生常谈的跨域处理
2017/01/11 Javascript
jquery uploadify如何取消已上传成功文件
2017/02/08 Javascript
Angular.js组件之input mask对input输入进行格式化详解
2017/07/10 Javascript
Vue2.0设置全局样式(less/sass和css)
2017/11/18 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
2018/09/28 Javascript
node.js中process进程的概念和child_process子进程模块的使用方法示例
2020/02/11 Javascript
[02:32]DOTA2英雄基础教程 祸乱之源
2013/12/23 DOTA
[51:17]Mski vs VGJ.S Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
python的id()函数介绍
2013/02/10 Python
python操作gmail实例
2015/01/14 Python
flask中主动抛出异常及统一异常处理代码示例
2018/01/18 Python
解决python opencv无法显示图片的问题
2018/10/28 Python
对python requests发送json格式数据的实例详解
2018/12/19 Python
Python supervisor强大的进程管理工具的使用
2019/04/24 Python
Python使用sklearn实现的各种回归算法示例
2019/07/04 Python
如何在Win10系统使用Python3连接Hive
2020/10/15 Python
Kivari官网:在线购买波西米亚服装
2018/10/29 全球购物
加拿大领先的时尚和体育零售商:Sporting Life
2019/12/15 全球购物
Otiumberg官网:英国半精致珠宝品牌
2021/01/16 全球购物
大三自我鉴定范文
2013/10/05 职场文书
个人实用简单的自我评价
2013/10/19 职场文书
实习单位接收函模板
2014/01/10 职场文书
2015年团支部年度工作总结
2015/05/27 职场文书
经典祝酒词大全
2015/08/12 职场文书
导游词之塘栖古镇
2019/12/04 职场文书
使用Nginx+Tomcat实现负载均衡的全过程
2022/05/30 Servers