suppose have array of objects sort of groupable key:
var people = [ { 'name':'alice', 'gender': 'female' }, { 'name':'bob', 'gender': 'male' }, { 'name':'jeremy', 'gender': 'male' }, { 'name':'jess', 'gender': 'female' }, { 'name':'seymour', 'gender': 'female' }, ];
is there (native) function/method can applied array 'unzip' array 2 arrays, so:
boysandgirls = people.[**something**]('gender');
that result in:
{ 'male': [ ... ], 'female': [ ... ] }
or even:
[ [ {bob, ...}, {jeremy, ...}, {seymour, ...} ], // 'males' array [ {alice, ...}, {jess, ...} ] // 'female' array ]
i write algorithm myself, want know if there native array method -- or 1 might exist in language polyfilled in?
there no such method in javascript. ruby has in enumerator#group_by
:
people.group_by { |person| person['gender'] }
and easy enough write in javascript well. in fact, libraries have already, e.g. lodash.
_.groupby(people, function(person) { return person['gender']; });
if write yourself, can customise bit:
function groupbyprop(array, prop) { var result = {}; array.foreach(function(item) { var val = item[prop]; if (!result[val]) result[val] = [item]; else result[val].push(item); }); return result; } groupbyprop(people, 'gender');