Left pad в JS

Все на много проще с startPad

Я как-то писал про Left pad для чисел и приводил разные примеры. Но на дворе почти 2017 год и все делается теперь еще проще.

Предыдущий пост

Вроде бы простая задача. С ней сталкивался хотя бы раз любой разработчик. Как отформатировать число, дополнив его нулями с левой стороны?
Хипстеры просто пойдут и поставят библиотеку left-pad из npm. Более опытные разработчики решат задачу, в зависимости от своего опыта. Кстати, хороший вопрос для собеседования.

Кто-то прочтет этот пост и воспользуется советами из него:

Как делается left pad в 2017 году

… но в 2017 году все будут делать это по другому. У нас появились 2 функции (два метода в объекте String):

  1. String.prototype.padStart()
  2. String.prototype.padEnd()

Эти методы заполняют значениями до нужной длины строки. Проще показать на примере:

'abc'.padStart(10);         // "       abc"
'abc'.padStart(10, "foo"); // "foofoofabc"
'abc'.padStart(6,"123465"); // "123abc"
'abc'.padEnd(10);         // "abc       "
'abc'.padEnd(10, "foo"); // "abcfoofoof"
'abc'.padEnd(6,"123456"); // "abc123"

На сегодня (конец 2016 года) все эти методы работают только в Firefox. Данные методы пока являются рекомендациями в стандарт ES2017 и находятся на стадии 4.

Polyfills

Я бы предложил такой вариант полифилов:

String.prototype.padStart = function(len, pad = ' '){
var str = this.toString();
while(str.length < len) str = pad + str;
return str;
}
String.prototype.padEnd = function(len, pad = ' '){
var str = this.toString();
while(str.length < len) str += pad;
return str;
}

Ссылки по теме