JSFiddle - React, Tailwind, and code Playground

JavaScript

/**
     * @param string needle word to search
     * @param int accurancy minimum matching characters
     * @param array haystack array of strings to examine
     */
    function fuzzyMatch(needle,accurancy,haystack) {
      function strcmpshift(a,b,shift) {
        var match=0, len=Math.min(a.length,b.length);
        for(var i in a) if(a[i]==b[+i+shift]) ++match;
        return match;
      }
      function strcmp(a,b) {
        for(var i=0,max=0,now; i<b.length; ++i) {
          now = strcmpshift(a,b,i);
          if(now>max) max = now;
        }
        return max;
      }
      
      var word,best=accurancy-1,step,item;
      for(var i in haystack) {
        item = haystack[i];
        step = Math.max(strcmp(item,needle),strcmp(needle,item));
        if(step<=best) continue;
        best=step, word=item;
      };
      return word;
    }

    var word = "rotation";
    var commands = ["notable","tattoo","onclick","statistically"];
    // find the closest command with at least 3 matching characters
    var command = fuzzyMatch(word,3,commands);
    alert(command); // tattoo