JSFiddle - React, Tailwind, and code Playground

JavaScript

const output = text => document.body.innerHTML += text;

/**
 * @param {Array<number>} big
 * @param {number} int
 * @param {number} digits
 * @returns {Array<number>}
 */
const mult = (big, int, digits = 1) => {
  let res = [], carry = 0, div = 10 ** digits;
  for (let i = big.length - 1; i >= 0 || carry; i -= 1) {
    let prod = (i < 0 ? 0 : big[i] * int) + carry;
    res.push(prod % div);
    carry = prod / div | 0;
  }
  return res.reverse();
}
const factor = (n, digits = 1) => 
  [...Array(n)].reduce((p, _, i) => mult(p, i + 1, digits), [1])
    .map(String)
    .map(el => '0'.repeat(digits - el.length) + el)
    .join('')
    .replace(/^0+/, '');

let t0 = performance.now();
let result = factor(2019, 6).match(/19/g).length;
output(result + ' in ' + (performance.now() - t0) + 'ms');