Skip to content

Instantly share code, notes, and snippets.

@davismartin
Created March 4, 2017 00:07
Show Gist options
  • Save davismartin/23e912615762e316a39a64a46d502316 to your computer and use it in GitHub Desktop.
Save davismartin/23e912615762e316a39a64a46d502316 to your computer and use it in GitHub Desktop.
what I should of done
var endorsements = [
{skill:"javascript", user:'billy'},
{skill:"javascript", user:'bob'},
{skill:"css", user:'timmy'},
{skill:"html", user:'billy'},
{skill:"css", user:'joan'},
{skill:"css", user:'fred'},
{skill:"html", user:'dubs'}
];
// result
// [
// {skill:"javascript", users:['billy', 'bob'], count:2},
// {skill:"css", users:['timmy', 'joan', 'fred'], count:3},
// {skill:"html", users:['billy', 'dubs'], count:4}
// ]
function parse(data) {
var obj = createObj(data);
var ans = [];
for(var key in obj) {
var tmpObj = {'skill':key,'users':obj[key],'count':obj[key].length};
ans.push(tmpObj);
}
return ans;
}
function createObj(data) {
return data.reduce(function(rtnObj,entry) {
rtnObj[entry.skill] ? rtnObj[entry.skill].push(entry.user) : rtnObj[entry.skill] = [entry.user]
return rtnObj;
}, {});
}
console.log(parse(endorsements));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment