UNPKG

brainjs

Version:
58 lines (51 loc) 1.17 kB
var _ = require("underscore"); /* Functions for turning sparse hashes into arrays and vice versa */ function buildLookup(hashes) { // [{a: 1}, {b: 6, c: 7}] -> {a: 0, b: 1, c: 2} var hash = _(hashes).reduce(function(memo, hash) { return _(memo).extend(hash); }, {}); return lookupFromHash(hash); } function lookupFromHash(hash) { // {a: 6, b: 7} -> {a: 0, b: 1} var lookup = {}; var index = 0; for (var i in hash) { lookup[i] = index++; } return lookup; } function toArray(lookup, hash) { // {a: 0, b: 1}, {a: 6} -> [6, 0] var array = []; for (var i in lookup) { array[lookup[i]] = hash[i] || 0; } return array; } function toHash(lookup, array) { // {a: 0, b: 1}, [6, 7] -> {a: 6, b: 7} var hash = {}; for (var i in lookup) { hash[i] = array[lookup[i]]; } return hash; } function lookupFromArray(array) { var lookup = {}; // super fast loop var z = 0; var i = array.length; while (i-- > 0) { lookup[array[i]] = z++; }; return lookup; } module.exports = { buildLookup: buildLookup, lookupFromHash: lookupFromHash, toArray: toArray, toHash: toHash, lookupFromArray: lookupFromArray };