JSFiddle - React, Tailwind, and code Playground
JavaScript
var endorsements = [
{ skill: 'css', user: 'Bill' },
{ skill: 'html', user: 'Moe' },
{ skill: 'javascript', user: 'John' },
{ skill: 'javascript', user: 'Taylor' },
{ skill: 'css', user: 'Peter' }
];
// write program that takes an array like above and returns:
[
{ skill: 'css', users: ['Bill', 'Peter'], count: 2 },
{ skill: 'html', users: ['Moe'], count: 1 },
{ skill: 'javascript', users: ['John', 'Taylor'], count: 2 }
]
const bySkill = {}
endorsements.forEach(value => {
if (!bySkill[value.skill]) {
bySkill[value.skill] = []
}
bySkill[value.skill].push(value)
})
let output = []
Object.keys(bySkill).forEach(key => {
let users = bySkill[key]
output.push({
skill: users[0].skill,
users: users.map(user => user.user),
count: users.length
})
})
console.log(output)