- npm left-pad 的实现,此包已被删除
function leftpad(str, len, ch) { str = String(str); var i = -1; if(!ch && ch !== 0) ch = " "; len = len - str.length; while(++i < len) { str = ch + str; } return str;}
- 使用数组实现
function leftpad(str, len, ch){ if(!ch && ch !== 0) ch = ' '; len = len - str.length; return Array(len).join(ch) + str;}
- 用类数组实现,避免创建数组
var _join = Array.prototype.joinfunction leftpad(str, len, ch) { if(!ch && ch !== 0) ch = " "; len = len - str.length; return _join.call({length: len}, ch) + str;}
- 二分法
function leftpad(str, len, ch) { if(!ch && ch !== 0) ch = ' '; len = len - str.length; var total = ''; while(true) { // 基数, total 多加 1个ch if (len % 2 == 1) total += ch; if (len === 1) return total + str; // 每次ch都变成 chch ch += ch; // 长度减半 len = parseInt(len / 2); }}// 用位运算优化性能 // 20 -> 10 -> 5 -> 2 => 1function leftpad(str, len, ch) { if(!ch && ch !== 0) ch = ' '; len = len - str.length; var total = ''; while(true) { // 基数, total 多加 1个ch if (len & 1 == 1) total += ch; if (len === 1) return total + str; // 每次ch都变成 chch ch += ch; // 长度减半 len = len >> 1; // 每次长度减半 }}
- 参考论 leftpad的实现