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 方法实现返回多个数据的代码
Apr 30 Javascript
超级酷和最实用的jQuery实例收集(20个)
Apr 21 Javascript
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
Sep 26 Javascript
Jquery修改页面标题title其它JS失效的解决方法
Oct 31 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
Jul 14 Javascript
Js获取当前日期时间及格式化代码
Sep 17 Javascript
vue购物车插件编写代码
Nov 27 Javascript
原生JS写Ajax的请求函数功能
Dec 22 Javascript
vue 之 .sync 修饰符示例详解
Apr 21 Javascript
vue非父子组件通信问题及解决方法
Jun 11 Javascript
ios中视频的最后一桢问题解决
May 14 Javascript
vue3.0中友好使用antdv示例详解
Jan 05 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
php session应用实例 登录验证
2009/03/16 PHP
PHP资源管理框架Assetic简介
2014/06/12 PHP
PHP7多线程搭建教程
2017/04/21 PHP
JS类中定义原型方法的两种实现的区别
2007/03/08 Javascript
JavaScript 实现模态对话框 源代码大全
2009/05/02 Javascript
jQuery生成asp.net服务器控件的代码
2010/02/04 Javascript
(function($){...})(jQuery)的意思
2010/07/22 Javascript
中国地区三级联动下拉菜单效果分析
2012/11/15 Javascript
Jquery数字上下滚动动态切换插件
2015/08/08 Javascript
Javascript Function.prototype.bind详细分析
2016/12/29 Javascript
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
2017/06/29 Javascript
利用HBuilder打包前端开发webapp为apk的方法
2017/11/13 Javascript
ionic3实战教程之随机布局瀑布流的实现方法
2017/12/28 Javascript
使用Vue.js和Flask来构建一个单页的App的示例
2018/03/21 Javascript
Vue自定义toast组件的实例代码
2018/08/15 Javascript
JS实现头条新闻的经典轮播图效果示例
2019/01/30 Javascript
微信小程序8种数据通信的方式小结
2020/02/03 Javascript
vue 实现超长文本截取,悬浮框提示
2020/07/29 Javascript
[46:14]VGJ.T vs Liquid 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
python基础教程之数字处理(math)模块详解
2014/03/25 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
2016/12/23 Python
python实现SOM算法
2018/02/23 Python
python批量实现Word文件转换为PDF文件
2018/03/15 Python
python用fsolve、leastsq对非线性方程组求解
2018/12/15 Python
Python理解递归的方法总结
2019/01/28 Python
Python骚操作之动态定义函数
2019/03/26 Python
python 处理微信对账单数据的实例代码
2019/07/19 Python
数组越界问题
2015/10/21 面试题
司机辞职报告范文
2014/01/20 职场文书
实习单位鉴定评语
2014/04/26 职场文书
运动会广播稿100字
2014/09/14 职场文书
群众路线教育实践活动总结
2014/10/30 职场文书
餐厅服务员岗位职责
2015/02/09 职场文书
详解Vue中$props、$attrs和$listeners的使用方法
2022/02/18 Vue.js
python如何为list实现find方法
2022/05/30 Python
JavaScript前端面试组合函数
2022/06/21 Javascript