前两天看了下导致react、babel打包失败的left-pad 14行源码,的确是存在黑科技啊,可以把填充缩短到只填充2的n次方中的n次。其中还有关于位操作符的运用,很好很强大。

不过由于太简单了,代码太少,所以运用场景比较单一,一些复杂场景也不能返回正确想要达到的值。我就在这基础上进行了优化,并且给出了位操作的替代处理方案,效率和源代码一样。以下是相关代码,并在github上附上了对应的单元测试:

/*** Created by lenovo on 2017/6/13.*/
/*** 高效填充字符函数(填充次数为2的n次方中的n次)* @param  {string}  str    待填充的字符串* @param  {number}  len    填充后的长度* @param  {any}     ch     填充物,可以单个字符,也可以多个字符。* @param  {any}     direct 填充位置(r: 右填充,其他:左填充)*/
function pad(str, len, ch, direct) {var left = '', //超出的填充字符pad = '', // 完整填充字符ch = ch + ''; //填充物//完整填充字符len = len - str.length;// 1、填充长度必须大于0,否则返回原字符串,例如(pad('aa', 0, 'tabca'))if (!(len >= 0)) return str;if (ch.length > 0 && len % ch.length !== 0) {console.log(222)//2、不能正好完整填充,则会有超出的填充字符,例如(pad('aa', 7, 'tabc'))left = ch.slice(0, len % ch.length);}// 3、获取实际填充长度,如果超过一个字符,填充次数会相应除去,例如(pad('aa', 7, 't')和2)len = Math.floor(len / (ch.length));while(true) {// 4、长度如果为偶数,则直接对折加如果不是,最后长度为0也会进入该函数,例如(pad('aa', 10, 'taca')和2)if (len % 2) pad += ch;// if (len & 1) pad += ch;len >>= 1;// len = Math.floor(len / 2);if (len) ch += ch;else break;}// 5、默认为左填充,如果想右填充则direct传'r',例如(pad('aa', 7, 't','r')和2)if (direct === 'r') {return str + pad + left;} else {return left + pad + str;}
}module.exports = pad;

github地址:https://github.com/maoruibin001/Black-Technology
上面有详细的单元测试,欢迎大家fork。

javascript黑科技之高效填充相关推荐

  1. 秒变黑科技的高效电脑软件,请低调收藏!

    很多人买了电脑之后不知道该安装什么软件,除了安装办公软件和聊天软件之外,无非就是游戏了,下面给大家介绍几款秒变黑科技的电脑软件! Cent Browser 这是一款比较强大的浏览器,提供便捷快速网页浏 ...

  2. 45个实用的JavaScript黑科技

    2019独角兽企业重金招聘Python工程师标准>>> 众所周知,Javascript是全球最流行的语言之一,它涉足Web开发,移动端开发(PhoneGap . Appcelerat ...

  3. oppoR17手机计算机的隐藏功能,OPPO R17 Pro隐藏了很多你不知道的黑科技,让你高效使用手机...

    目前智能手机发展得比较快,1年几个样,每次新品发布会均有讲手机的各参数及主要功能,实际手机的很多功能及小技巧不可能在发布会上全部介绍完,我们平常使用时,相信有很多功能没有用完:即将开售的新机R17Pr ...

  4. 决策易贴心黑科技第2波,智能巡店更高效!

    许多医药代表在做门店拜访计划时,总会觉得今天路线安排非常完美,可以再多走几家计划外的门店了.然而现实总与预期擦肩而过,到了现场盘点检查已上架的产品时,出现名称难写易填错,漏点错点不在少数,小问题一大堆 ...

  5. js中当等于最小值是让代码不执行_28 个JavaScript编程黑科技,装逼指南,高逼格代码,让你惊叹不已...

    Javascript 是一门很厉害的语言,我可能学了假的 JavaScript,哈哈,大家还有什么推荐的,欢迎补充. 1.单行写一个评级组件 "★★★★★☆☆☆☆☆".slice( ...

  6. 【转】这些JavaScript编程黑科技,装逼指南,高逼格代码,让你惊叹不已

    [转]这些JavaScript编程黑科技,装逼指南,高逼格代码,让你惊叹不已 Javascript是一门很吊的语言,我可能学了假的JavaScript,哈哈,大家还有什么推荐的 本文秉承着:你看不懂是 ...

  7. 这些JavaScript编程黑科技,装逼指南,高逼格代码,让你惊叹不已

    1.单行写一个评级组件 "★★★★★☆☆☆☆☆".slice(5 - rate, 10 - rate); 定义一个变量rate是1到5的值,然后执行上面代码,看图 才发现插件什么的 ...

  8. 5款高效黑科技软件,帮你全面提升幸福感

    一款好用的软件不仅能够帮我们提高效率,还能全面提升幸福感!今天来给大家分享5款高效黑科技软件,简直太令人惊喜了! Baklib Baklib是一款非常专业的知识库构建软件. 在线编辑十分流畅,多端适配 ...

  9. 黑科技:WiFi霸屏神器,线下高效引流解决方案

    短短3个月时间已应用于十多个行业逾20000个项目. 目前已被这些行业广泛使用: 广告 丨 学生组织 丨 教育机构丨 外卖 丨 金融 丨 保险 丨 本地服务 丨 餐饮 丨 购物商场 丨 10+ 这款黑 ...

最新文章

  1. Eclipse + Spring boot +mybatis + mysql(后续)
  2. JVM是如何分配和回收内存?有实例!
  3. CSS Image Rollovers翻转效果Image Sprites图片精灵
  4. c 多语言切换dll,【图片】老C教学之——给你的程序添加多语言支持【dll】【vb吧】_百度贴吧...
  5. Scala 闭包详解
  6. python共享内存通信mapofview_python map eval strPython socket模块实现的udp通信功能示例...
  7. arcgis运行慢_ArcGIS Pro运行较慢的诊断方法
  8. windows 读写锁 python_用Python实现读写锁的示例代码
  9. solr处理oracle中CLOB、BLOB
  10. php-php异步网络通信引擎-服务发现-消息队列 案例
  11. 齿轮传动设计分析软件 KISSsoft 03-2018 中英文版 带安装视频
  12. tomcat内存溢出,性能优化配置讲解
  13. 数据库用户名和密码加密
  14. 前端分页加载功能实现?
  15. 古籍拆字 - 批量拆字成图 - js拆字 - js拆图 - js拆古籍 -导出svg矢量图
  16. 全“芯”升级,浩辰CAD 2021赋能全国产化CAD应用
  17. pytorch-YOLOv3移植到寒武纪
  18. 文件指纹修改工具 Hash Modifier
  19. android 备份管理器,最佳Android备份提取器和备份解决方案
  20. 安装系统遇到MBR的硬盘,EFI系统只能安装GPT硬盘

热门文章

  1. word表格拆分技巧
  2. neuromaps: structural and functional interpretation of brain maps 多模态、多尺度脑科学数据综合分析的利器
  3. 开关电源怎么测试文波_电源纹波测试的正确方法,值得你学习
  4. 关于芯片中电源纹波抑制比PSRR参数的理解
  5. 微信授权登录(OAuth2.0)-- 随记
  6. Python——雅克比迭代求线性方程组的根
  7. 怎么安装Latex——Texstudio+Texlive 2020+Sumatra PDF详细安装教材
  8. 10.数据结构:栈和队列
  9. 阿里云ACP考试如何顺利通过,如何备考?
  10. 恢复 mysql 快照_SQL如何使用快照恢复之前的数据