String.repeat() がES6なのでIE11では動きまてん

右埋め
const padRight = (str, padchar, len) => {
  const padstr = padchar.repeat(len);
  return `${str}${padstr}`.slice(0, len);
};
左埋め
const padLeft = (str, padchar, len) => {
  const padstr = padchar.repeat(len);
  return `${padstr}${str}`.slice(-len);
};
中央寄せ
const padSide = (str, padchar, len) => {
  const lPadstr = padchar.repeat(Math.floor(len / 2));
  const rPadstr = padchar.repeat(Math.ceil(len / 2));
  const padded = `${lPadstr}${str}${rPadstr}`;
  const start = Math.floor((padded.length - len) / 2);
  return padded.slice(start, start + len);
};
テスト
console.assert(padRight('abc', '!', 5) === 'abc!!');
console.assert(padRight('abcde', '!', 5) === 'abcde');
console.assert(padRight('abcdefg', '!', 5) === 'abcde');

console.assert(padLeft('abc', '!', 5) === '!!abc');
console.assert(padLeft('abcde', '!', 5) === 'abcde');
console.assert(padLeft('abcdefg', '!', 5) === 'cdefg');

console.assert(padSide('abc', '!', 5) === '!abc!');
console.assert(padSide('abcde', '!', 5) === 'abcde');
console.assert(padSide('abcdefg', '!', 5) === 'bcdef');
console.assert(padSide('abc', '!', 4) === '!abc');   // 偶数は左寄り
console.assert(padSide('abc', '!', 6) === '!!abc!'); // 偶数は左寄り