Skip to content

Instantly share code, notes, and snippets.

@szy0syz
Created July 30, 2017 07:57
Show Gist options
  • Save szy0syz/d556bf617440721a62a38c43b8976db0 to your computer and use it in GitHub Desktop.
Save szy0syz/d556bf617440721a62a38c43b8976db0 to your computer and use it in GitHub Desktop.
JavaScript array extension
//////////////////////////
Object.defineProperty(Array.prototype, 'group', {
enumerable: false,
value: function (key) {
var map = {};
this.forEach(function (e) {
var k = key(e);
map[k] = map[k] || [];
map[k].push(e);
})
return Object.keys(map).map(function (k) {
return { key: k, data: map[k] };
})
}
})
//////////////////////////
Object.defineProperty(Array.prototype, 'group2', {
enumerable: false,
value: function (key) {
var map = {};
this.map(e => ({ k: key(e), d: e })).forEach(e => {
map[e.k] = map[e.k] || [];
map[e.k].push(e.d);
});
return Object.keys(map).map(k => ({ key: k, data: map[k] }));
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment