key/value | var indices = {}, sets, set, i, l, j, m, key, value, obj;
l = arr.length;
keys = Object.keys(arr[0]);
m = keys.length;
for (j = 0; j < m; j++) {
key = keys[j];
if (key !== 'id') {
sets = indices[key] = {};
for (i = 0; i < l; i++) {
obj = arr[i];
value = obj[key];
set = sets[value];
if (!set) {
sets[value] = set = [];
}
set.push(obj);
}
}
}
| ready |
value/key | var indices = {}, sets, set, i, l, j, m, key, value, obj;
l = arr.length;
keys = Object.keys(arr[0]);
m = keys.length;
for (i = 0; i < l; i++) {
obj = arr[i];
for (j = 0; j < m; j++) {
key = keys[j];
if (key !== 'id') {
value = obj[key];
sets = indices[key];
if (!sets) {
indices[key] = sets = {};
}
set = sets[value];
if (!set) {
sets[value] = set = [];
}
set.push(obj);
}
}
}
| ready |
forIn/value lodash | var indices = {};
_.forIn(arr[0], function(_a, key) {
var sets;
if (key !== 'id') {
sets = indices[key] = {};
_.each(arr, function(obj) {
var value, set;
value = obj[key];
set = sets[value];
if (!set) {
sets[value] = set = [];
}
set.push(obj);
});
}
});
| ready |
forOwn/value lodash | var indices = {};
_.forOwn(arr[0], function(_a, key) {
var sets;
if (key !== 'id') {
sets = indices[key] = {};
_.each(arr, function(obj) {
var value, set;
value = obj[key];
set = sets[value];
if (!set) {
sets[value] = set = [];
}
set.push(obj);
});
}
});
| ready |
value/forIn lodash | var indices = {};
_.each(arr, function(obj) {
_.forIn(arr[0], function(_a, key) {
var value, sets, set;
if (key !== 'id') {
value = obj[key];
sets = indices[key];
if (!sets) {
indices[key] = sets = {};
}
set = sets[value];
if (!set) {
sets[value] = set = [];
}
set.push(obj);
}
});
});
| ready |
value/forOwn lodash | var indices = {};
_.each(arr, function(obj) {
_.forOwn(arr[0], function(_a, key) {
var value, sets, set;
if (key !== 'id') {
value = obj[key];
sets = indices[key];
if (!sets) {
indices[key] = sets = {};
}
set = sets[value];
if (!set) {
sets[value] = set = [];
}
set.push(obj);
}
});
});
| ready |
key/value lodash | var indices = {}, keys;
keys = Object.keys(arr[0]);
_.each(keys, function(key) {
var sets;
if (key !== 'id') {
sets = indices[key] = {};
_.each(arr, function(obj) {
var value, set;
value = obj[key];
set = sets[value];
if (!set) {
sets[value] = set = [];
}
set.push(obj);
});
}
});
| ready |
value/key lodash | var indices = {}, keys;
keys = Object.keys(arr[0]);
_.each(arr, function(obj) {
_.each(keys, function(key) {
var value, sets, set;
if (key !== 'id') {
value = obj[key];
sets = indices[key];
if (!sets) {
indices[key] = sets = {};
}
set = sets[value];
if (!set) {
sets[value] = set = [];
}
set.push(obj);
}
});
});
| ready |
value/(key w/o id) lodash | var indices = {}, keys;
keys = Object.keys(arr[0]);
keys.splice(keys.indexOf('id'), 1);
_.each(arr, function(obj) {
_.each(keys, function(key) {
var value, sets, set;
value = obj[key];
sets = indices[key];
if (!sets) {
indices[key] = sets = {};
}
set = sets[value];
if (!set) {
sets[value] = set = [];
}
set.push(obj);
});
});
| ready |
forOwn/groupBy lodash | var indices = {};
_.forOwn(arr[0], function(_a, key) {
var sets;
if (key !== 'id') {
indices[key] = _.groupBy(arr, key);
}
});
| ready |
for -- in own key/value | var indices = {}, sets, set, i, l, key, value, obj, obj0;
l = arr.length;
obj0 = arr[0];
for (key in obj0) {
if (obj0.hasOwnProperty(key)) {
if (key !== 'id') {
sets = indices[key] = {};
for (i = 0; i < l; i++) {
obj = arr[i];
value = obj[key];
set = sets[value];
if (!set) {
sets[value] = set = [];
}
set.push(obj);
}
}
}
}
| ready |
three phases (hasOwn) | var indices = {}, sets, set, i, l, key, keys, keyHash, value, obj;
keyHash = {};
l = arr.length;
for (i = 0; i < l; i++) {
obj = arr[i];
for (key in obj) {
if (obj.hasOwnProperty(key)) {
keyHash[key] = true;
}
}
}
keys = [];
for (key in keyHash) {
if (obj.hasOwnProperty(key)) {
if (key !== 'id') {
keys.push(key);
}
}
}
m = keys.length;
for (j = 0; j < m; j++) {
key = keys[j];
sets = indices[key] = {};
for (i = 0; i < l; i++) {
obj = arr[i];
value = obj[key];
set = sets[value];
if (!set) {
sets[value] = set = [];
}
set.push(obj);
}
}
| ready |
three phases (.keys) | var indices = {}, sets, set, i, l, key, keys, keyHash, value, obj;
keyHash = {};
l = arr.length;
for (i = 0; i < l; i++) {
obj = arr[i];
keys = Object.keys(obj);
m = keys.length;
for (j = 0; j < m; j++) {
key = keys[m];
keyHash[key] = true;
}
}
keys = [];
for (key in keyHash) {
if (obj.hasOwnProperty(key)) {
if (key !== 'id') {
keys.push(key);
}
}
}
m = keys.length;
for (j = 0; j < m; j++) {
key = keys[j];
sets = indices[key] = {};
for (i = 0; i < l; i++) {
obj = arr[i];
value = obj[key];
set = sets[value];
if (!set) {
sets[value] = set = [];
}
set.push(obj);
}
}
| ready |