Generates an Alphabetic or Alphanumeric index lookup

by Shobhit Sharma

JavaScript

// Build an alphabetic / alphanumeric index lookup

// Scales three characters deep
// Should work for any int up to i = 143,364 when alphabetic (object-safe keys) Math.pow(s.length, 3) + Math.pow(s.length, 2) + s.length
// This can be scaled further by extending s to include digits, characters, etc. (242,234 if alphanumeric)
function generateLookup (length) {
  var s = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'; // Alphabetic
  // var s = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890'; // Alphanumeric

  var lookup = [];

  for (var i = 0; i < length; i++) {
    var out = '';
    var l = s.length;
    var b = Math.floor(i / l) - 1;

    if (b >= l) {
      var c = Math.floor(b / l);
      b -= c * l;
      out += s[c-1];
    }

    if (b >= 0) out += s[b];
    out += s[(i % l)];
    lookup.push(out);
  }

  return lookup;
}


/**
 * console.save() function (download a json file)
 */
(function (console) {
    console.save = function (data, filename) {
        if (!data) return console.error('Console.save: No data');
        if (typeof data === "object") data = JSON.stringify(data, undefined, 4);
        if (!filename) filename = 'console.json';

        var b = new Blob([data], {type: 'text/json'}),
            e = document.createEvent('MouseEvents'),
            a = document.createElement('a');

        a.download = filename;
        a.href = window.URL.createObjectURL(b);
        a.dataset.downloadurl =  ['text/json', a.download, a.href].join(':');
        e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
        a.dispatchEvent(e);
    }
})(console);

// Alphanumeric lookup to 1024 places
var alphanumericLookup = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "aa", "ab",...