left-pad拼接指定字符

编语:最近热门话题木过于某人把自己的 Npm pkg 给 unpublish,导致一些依赖的大包都收到影响

正文:

首先:它是做什么的?

String left pad

在给定字符串前拼指定字符到指定长度

var leftpad = require(‘left-pad’)

// => ”  foo”

leftpad(‘foo’, 5)

再看看这个包的源码:

module.exports = leftpad;

function leftpad (str, len, ch) {

str = String(str);

var i = -1;

ch || (ch = ‘ ‘);

len = len – str.length;

while (++i < len) {

str = ch + str;

}

return str;

}

来看看 baidu tangram 的类似的 pad 版本:

// 对目标数字进行 0 补齐

// 输出:00025

pad(25, 5)

// 1.5.1

function pad(source, length) {

var pre = “”,

negative = (source < 0),

string = String(Math.abs(source));

if (string.length < length) {

pre = (new Array(length – string.length + 1)).join(‘0’);

}

return (negative ?  “-” : “”) + pre + string;

};

补 0 的 pad 方式:

function pad(val,len){

val = String(val);

len = len || 2;

while(val.length < len){

val = “0” + val;

}

return val;

}

比较简单的版本:

module.exports = function(str, width, char) {

char = char || ‘0’;

str = str.toString();

while (str.length < width) str = char + str;

return str;

};

参考 tangram 那种数组方式的版本:

function leftpad(str, len, ch){

str = ” + str;

var padLen = len – str.length;

if(padLen <= 0){

return str;

}else{

return (new Array(padLen + 1)).join((”+ch) || ‘ ‘) + str;

}

}

月影的方案:

function leftpad(str, len, ch){

str = ” + str;

if(!ch && ch !== 0) ch = ‘ ‘;

 

var padlen = len – str.length;

if(padlen <= 0) return str;

 

var padch = padlen & 1 ? ch : ”;

 

while(padlen >>= 1){

ch += ch;

if(padlen & 1){

padch += ch;

}

}

return padch + str;

}

一个热点其实里面还是有很多料的,比如:

  • 如何把参数转字符串
  • 如何使用数组这种神奇的类型

转自:DDFE


关注我

我的微信公众号:前端开发博客,在后台回复以下关键字可以获取资源。

  • 回复「小抄」,领取Vue、JavaScript 和 WebComponent 小抄 PDF
  • 回复「Vue脑图」获取 Vue 相关脑图
  • 回复「思维图」获取 JavaScript 相关思维图
  • 回复「简历」获取简历制作建议
  • 回复「简历模板」获取精选的简历模板
  • 回复「加群」进入500人前端精英群
  • 回复「电子书」下载我整理的大量前端资源,含面试、Vue实战项目、CSS和JavaScript电子书等。
  • 回复「知识点」下载高清JavaScript知识点图谱

每日分享有用的前端开发知识,加我微信:caibaojian89 交流