JSFiddle - React, Tailwind, and code Playground

HTML

<!doctype html>
<form>
<select id=prod><option>select a prod
     <option value=gl1kCottonCandy>gl1kCottonCandy           <option value=gl1kCottonCandySansUniforms >gl1kCottonCandy sans uniforms
    <option value=magister>magister         <option value= magisterSansUniforms>magister sans uniforms 
</select>
         
         &times;
             
<select id=hashMethod>
     <option>and a hashing method 
    <option value=jed>jed
    <option value=p01>p01
    <option value=daeken>daeken
</select>
        </form>

JavaScript

var prods=
    {
         gl1kCottonCandy:{createProgram:1,shaderSource:1,createShader:1,compileShader:1,attachShader:1,linkProgram:1,useProgram:1,enableVertexAttribArray:1,getUniformLocation:1,bindBuffer:1,createBuffer:1,bufferData:1,vertexAttribPointer:1,drawArrays:1,uniform1f:1},         gl1kCottonCandySansUniforms:{createProgram:1,shaderSource:1,createShader:1,compileShader:1,attachShader:1,linkProgram:1,useProgram:1,enableVertexAttribArray:1,getUniformLocation:1,bindBuffer:1,createBuffer:1,bufferData:1,vertexAttribPointer:1,drawArrays:1},           magister:{attachShader:1,createProgram:1,linkProgram:1,createBuffer:1,bindBuffer:1,bufferData:1,viewport:1,createShader:1,shaderSource:1,compileShader:1,useProgram:1,getAttribLocation:1,getUniformLocation:1,uniform1f:1,uniform2f:1,vertexAttribPointer:1,enableVertexAttribArray:1,drawArrays:1}, 
             magisterSansUniforms:{attachShader:1,createProgram:1,linkProgram:1,createBuffer:1,bindBuffer:1,bufferData:1,viewport:1,createShader:1,shaderSource:1,compileShader:1,useProgram:1,getAttribLocation:1,getUniformLocation:1,vertexAttribPointer:1,enableVertexAttribArray:1,drawArrays:1} };

var hashMethods =
    {
        jed:function(a){return a[1]+a[7]},
        p01: function(a){return a.match(/^..|[A-Z]|\df$/g).join('')}, 
        daeken:function(a){return a.slice(1,-5).replace(/[ntalruicoh]/ig,'')}
    }

    
function testHashingUniqueness( obj,  hashMethod , methodsUsed )
{
    var k,
        l,
        gain=-hashMethod.toString().length,
        isUniqueEnough = true;
        keys={},
        uniques=[],
        collisions=[];
    
    for(k in obj)
    {
        l=hashMethod(k);
        keys[l]?keys[l].push(k):keys[l]=[k];
        if(methodsUsed[k])methodsUsed[k]=l;
    }

    //    check uniqueness
    for(k in methodsUsed)
    {
        l= hashMethod (k);
        var unique = keys[l].length==1;
        gain += k.length-l.length;
        isUniqueEnough &= unique;
         gain &= -isUniqueEnough ;
        l=...