JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
<body>
  <div id="inputs"></div>
</body>

JavaScript

function parseElementsNonBlocking(elements, maxChunkSize) {
  var repeats = {},
    nChunks = Math.floor(elements / maxChunkSize),
    i = 0,
    j = 1;

  //loop through inputs and update repeats
  for (; i < nChunks; i++, j++) {
    setTimeout(modifyDOM.bind(null, elements.slice(i, j * maxChunkSize), repeats), 0);
  }
  // Rest
  setTimeout(modifyDOM.bind(null, elements.slice(i), repeats), 0);
}

function parseElementsBlocking(elements) {
  var repeats = {};

  //loop through inputs and update repeats
  modifyDOM(elements, repeats);
}

function modifyDOM(elements, repeats) {
  var input, text, i = 0;
  for (; i < elements.length; i++) {
    input = elements[i];
    text = input.value;
    // Remove class.
    input.className = input.className.replace(/\bdouble-error\b/, '');
    if (text) {
      repeats[text] = ~~repeats[text] + 1;
      input.value = text + "-" + repeats[text];
    }
  }
}

$(function() {
  var inputsDiv = $('#inputs'),
    i, time;
  for (i = 0; i < 10000; i++) {
    var val = i % 3 === 0 ? 'Mickey' : (i % 3 === 1 ? 'Mouse' : '');
    inputsDiv.append('<input type="text" class="double-error" name="FirstName" value="' + val + '">');
  }

  time = Date.now();
  //parseElementsBlocking($("input[type='text']"));
  parseElementsNonBlocking($("input[type='text']"), 100);
  console.log(Date.now() - time);
});