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 相关文章推荐
原始的js代码和jquery对比体会
Sep 10 Javascript
JavaScript中的常见问题解决方法(乱码,IE缓存,代理)
Nov 28 Javascript
Jquery实现弹性滑块滑动选择数值插件
Aug 08 Javascript
JS+CSS实现简单的二级下拉导航菜单效果
Sep 21 Javascript
JavaScript的instanceof运算符学习教程
Jun 08 Javascript
基于bootstrap风格的弹框插件
Dec 28 Javascript
vue父组件通过props如何向子组件传递方法详解
Aug 16 Javascript
Vue中使用sass实现换肤功能
Sep 07 Javascript
使用 electron 实现类似新版 QQ 的登录界面效果(阴影、背景动画、窗体3D翻转)
Oct 23 Javascript
VueCli3.0中集成MockApi的方法示例
Jul 05 Javascript
BootStrap前端框架使用方法详解
Feb 26 Javascript
40行代码把Vue3的响应式集成进React做状态管理
May 20 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实现rc4加密算法代码
2012/04/25 PHP
轻松掌握php设计模式之访问者模式
2016/09/23 PHP
PHP7 mongoDB扩展使用的方法分享
2019/05/02 PHP
常见的5个PHP编码小陋习以及优化实例讲解
2021/02/27 PHP
Node.js中require的工作原理浅析
2014/06/24 Javascript
jquery使用$(element).is()来判断获取的tagName
2014/08/24 Javascript
js中取得变量绝对值的方法
2015/01/03 Javascript
JavaScript实现打字效果的方法
2015/07/10 Javascript
AngularJS基础 ng-if 指令用法
2016/08/01 Javascript
在React中如何优雅的处理事件响应详解
2017/07/24 Javascript
浅谈Emergence.js 检测元素可见性的 js 插件
2017/11/18 Javascript
jQuery.extend 与 jQuery.fn.extend的用法及区别实例分析
2018/07/25 jQuery
用jQuery将JavaScript对象转换为querystring查询字符串的方法
2018/11/12 jQuery
Element 默认勾选表格 toggleRowSelection的实现
2019/09/04 Javascript
如何通过shell脚本自动生成vue文件详解
2019/09/10 Javascript
深入webpack打包原理及loader和plugin的实现
2020/05/06 Javascript
Vue实现指令式动态追加小球动画组件的步骤
2020/12/18 Vue.js
Python中的Numpy入门教程
2014/04/26 Python
使用Python实现一个简单的项目监控
2015/03/31 Python
Python常用随机数与随机字符串方法实例
2015/04/09 Python
python中 logging的使用详解
2017/10/25 Python
Python实现控制台中的进度条功能代码
2017/12/22 Python
pandas数据框,统计某列数据对应的个数方法
2018/04/11 Python
Django 跨域请求处理的示例代码
2018/05/02 Python
Python调用graphviz绘制结构化图形网络示例
2019/11/22 Python
dpn网络的pytorch实现方式
2020/01/14 Python
python爬虫开发之Request模块从安装到详细使用方法与实例全解
2020/03/09 Python
opencv之颜色过滤只留下图片中的红色区域操作
2020/06/05 Python
超级实用的8个Python列表技巧
2020/08/24 Python
CSS3实现多背景展示效果通过CSS3定位多张背景
2014/08/10 HTML / CSS
行政人事专员岗位职责
2014/03/05 职场文书
低碳环保标语
2014/06/12 职场文书
家属联谊会致辞
2015/07/31 职场文书
高中班主任心得体会
2016/01/07 职场文书
原来实习报告是这样写的呀!
2019/07/03 职场文书
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
2021/06/29 Python