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+ashx无刷新GridView数据显示插件(实现分页、排序、过滤功能)
Apr 25 Javascript
如何制作浮动广告 JavaScript制作浮动广告代码
Dec 30 Javascript
jquery中的ajax方法怎样通过JSONP进行远程调用
May 04 Javascript
ie8下修改input的type属性报错的解决方法
Sep 16 Javascript
win7下安装配置node.js+express开发环境
Dec 06 Javascript
node.js基于mongodb的搜索分页示例
Jan 22 Javascript
javascript 中iframe高度自适应(同域)实例详解
May 16 Javascript
js最简单的双向绑定实例讲解
Jan 02 Javascript
vue cli安装使用less的教程详解
Jul 12 Javascript
JS如何在数组指定位置插入元素
Mar 10 Javascript
node koa2 ssr项目搭建的方法步骤
Dec 11 Javascript
vue实现滑动解锁功能
Mar 03 Vue.js
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
解决File size limit exceeded 错误的方法
2013/06/14 PHP
PHP实现文件上传和多文件上传
2015/12/24 PHP
详解php中curl返回false的解决办法
2019/03/18 PHP
JavaScript对象模型-执行模型
2008/04/28 Javascript
dojo学习第二天 ajax异步请求之绑定列表
2011/08/29 Javascript
jquery 获取标签名(tagName)示例代码
2013/07/11 Javascript
JavaScript动态操作表格实例(添加,删除行,列及单元格)
2013/11/25 Javascript
为Javascript中的String对象添加去除左右空格的方法(示例代码)
2013/11/30 Javascript
jquery获取及设置outerhtml的方法
2015/03/09 Javascript
Jquery遍历Json数据的方法
2015/04/20 Javascript
三种Node.js写文件的方式
2016/03/08 Javascript
移动端jQuery修正Web页面滑动时div问题的两则实例
2016/05/30 Javascript
为Jquery EasyUI 组件加上清除功能的方法(详解)
2017/04/13 jQuery
Vue resource中的GET与POST请求的实例代码
2017/07/21 Javascript
JS实现利用两个队列表示一个栈的方法
2017/12/13 Javascript
vue打包使用Nginx代理解决跨域问题
2018/08/27 Javascript
小程序如何构建骨架屏
2019/05/29 Javascript
python中使用pyhook实现键盘监控的例子
2014/07/18 Python
零基础写python爬虫之抓取糗事百科代码分享
2014/11/06 Python
约瑟夫问题的Python和C++求解方法
2015/08/20 Python
numpy基础教程之np.linalg
2019/02/12 Python
浅谈python之高阶函数和匿名函数
2019/03/21 Python
Python参数解析模块sys、getopt、argparse使用与对比分析
2019/04/02 Python
python编程进阶之异常处理用法实例分析
2020/02/21 Python
python实现mask矩阵示例(根据列表所给元素)
2020/07/30 Python
Python wordcloud库安装方法总结
2020/12/31 Python
浏览器实现移动端高性能css3动画(开启gpu加速)
2013/12/23 HTML / CSS
HTML5的video标签的浏览器兼容性增强方案分享
2016/05/19 HTML / CSS
Microsoft Advertising美国:微软搜索广告
2019/05/01 全球购物
如何提高SQL Server的安全性
2016/07/25 面试题
Linux机考试题
2015/10/16 面试题
写演讲稿要注意的六件事
2014/01/14 职场文书
董事长秘书职责
2014/01/31 职场文书
大学专科求职信
2014/07/02 职场文书
2015大学迎新标语
2015/07/16 职场文书
浅析Django接口版本控制
2021/06/26 Python