Skip to content

Instantly share code, notes, and snippets.

@erintherad
Created October 5, 2017 16:52
Show Gist options
  • Save erintherad/6afe2ee7a71ee53092d8667c1942f1f9 to your computer and use it in GitHub Desktop.
Save erintherad/6afe2ee7a71ee53092d8667c1942f1f9 to your computer and use it in GitHub Desktop.
Write some code that will change this data structure
// Given
var endorsements = [
{ skill: 'css', user: 'Bill' },
{ skill: 'javascript', user: 'Chad' },
{ skill: 'javascript', user: 'Bill' },
{ skill: 'css', user: 'Sue' },
{ skill: 'javascript', user: 'Sue' },
{ skill: 'html', user: 'Sue' }
];
// Result
[
{ skill: 'javascript', user: [ 'Chad', 'Bill', 'Sue' ], count: 3 },
{ skill: 'css', user: [ 'Sue', 'Bill' ], count: 2 },
{ skill: 'html', user: [ 'Sue' ], count: 1 }
//Answer
var skillObj = {};
for(var i = 0; i < endorsements.length; i ++) {
var endorsement = endorsements[i];
var skill = endorsement.skill;
var user = endorsement.user;
skillObj[skill] = skillObj[skill] || [];
skillObj[skill].push(user);
}
// console.log(skillObj)
var skillArr = [];
for (var key in skillObj) {
var obj = {
skill: key,
users: skillObj[key],
count: skillObj[key].length
};
skillArr.push(obj);
}
console.log(skillArr);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment