JSFiddle - React, Tailwind, and code Playground

HTML

Original:
<div id="orig" style="background-color:#99FF99"></div>
<br>
Sorted:
<div id="sorted" style="background-color:#FF9999"></div>

JavaScript

var sortbyalphabet_timo = (function() {
      var i, alphabet = "-0123456789AaÀàÁáÂâÃãÄäBbCcÇçDdÈèÉéÊêËëFfGgHhÌìÍíÎîÏïJjKkLlMmNnÑñOoÒòÓóÔôÕõÖöPpQqRrSsTtUuÙùÚúÛûÜüVvWwXxÝýŸÿZz",
      index = {};
    
      i = alphabet.length;
      while (i--) index[alphabet.charCodeAt(i)] = i;
      
        var counter=0;
        return function(a, b) {
        var i, len, diff;
            counter++;
    console.log(counter);
            
        if (typeof a === "string" && typeof b === "string") {
          (a.length > b.length) ? len = a.length : len = b.length;
          for (i = 0; i < len; i++) {
            diff = index[a.charCodeAt(i)] - index[b.charCodeAt(i)];
    
            if (diff !== 0) {
              return diff;
            }
          }
          // sort the shorter first
          return a.length - b.length;
        } else {
          return 0;
        }
      };
    })();

var words = ['tauschen', '66', '55', '33', 'täuschen', 'andern', 'ändern', 'Ast', 'Äste', 'dosen', 'dösen', 'Donaudam-0', 'Donaudam-1'];
$('#orig').html(words.toString());
words.sort(sortbyalphabet_timo);
$('#sorted').html(words.toString());