1. npm left-pad 的实现,此包已被删除
    1. function leftpad(str, len, ch) {
    2. str = String(str);
    3. var i = -1;
    4. if(!ch && ch !== 0) ch = " ";
    5. len = len - str.length;
    6. while(++i < len) {
    7. str = ch + str;
    8. }
    9. return str;
    10. }
    1. 使用数组实现
    1. function leftpad(str, len, ch){
    2. if(!ch && ch !== 0) ch = ' ';
    3. len = len - str.length;
    4. return Array(len).join(ch) + str;
    5. }
    1. 用类数组实现,避免创建数组
    1. var _join = Array.prototype.join
    2. function leftpad(str, len, ch) {
    3. if(!ch && ch !== 0) ch = " ";
    4. len = len - str.length;
    5. return _join.call({length: len}, ch) + str;
    6. }
    1. 二分法
    1. function leftpad(str, len, ch) {
    2. if(!ch && ch !== 0) ch = ' ';
    3. len = len - str.length;
    4. var total = '';
    5. while(true) {
    6. // 基数, total 多加 1个ch
    7. if (len % 2 == 1) total += ch;
    8. if (len === 1) return total + str;
    9. // 每次ch都变成 chch
    10. ch += ch;
    11. // 长度减半
    12. len = parseInt(len / 2);
    13. }
    14. }
    15. // 用位运算优化性能 // 20 -> 10 -> 5 -> 2 => 1
    16. function leftpad(str, len, ch) {
    17. if(!ch && ch !== 0) ch = ' ';
    18. len = len - str.length;
    19. var total = '';
    20. while(true) {
    21. // 基数, total 多加 1个ch
    22. if (len & 1 == 1) total += ch;
    23. if (len === 1) return total + str;
    24. // 每次ch都变成 chch
    25. ch += ch;
    26. // 长度减半
    27. len = len >> 1; // 每次长度减半
    28. }
    29. }
    1. 参考论 leftpad的实现