brainjs
Version:
Neural network library
58 lines (51 loc) • 1.17 kB
JavaScript
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
};