Question d’entretien chez LinkedIn
// 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' }
];
getSkills = (endorsements) => {
// Result
// [
// { skill: 'javascript', user: ['Chad', 'Bill', 'Sue'], count: 3 },
// { skill: 'css', user: ['Sue', 'Bill'], count: 2 },
// { skill: 'html', user: ['Sue'], count: 1 }
// ];
}
see this image:
http://i.imgur.com/UIeB3n4.png
Réponses aux questions d'entretien
let 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' },
];
let x = endorsements.reduce((acc, { skill, user }) => {
if (skill in acc) {
acc[skill] = {
user: [...acc[skill]['user'], user],
count: acc[skill]['count'] + 1,
skill: skill,
};
} else {
acc[skill] = {
user: [user],
count: 1,
skill: skill,
};
}
return acc;
}, {});
console.log(Object.values(x));
I did in a different way
let outPut = [];
let skillMap = {};
for (let char of endorsements) {
if (char['skill'] in skillMap) {
skillMap[char['skill']] = [...skillMap[char['skill']], char['user']];
} else {
skillMap[char['skill']] = [char['user']];
}
}
for (let key in skillMap) {
let skillObj = {};
skillObj['skill'] = key;
skillObj['user'] = skillMap[key];
skillObj['count'] = skillMap[key].length;
outPut.push(skillObj);
}
return outPut.sort((a, b) => b.count - a.count);
getSkills = endorsements => {
const skillMap = {};
// assumption - each object has all the properties, nothing is missing
endorsements.forEach((item, index) => {
const { skill, user } = item;
if (!skillMap[skill]) {
skillMap[skill] = {};
skillMap[skill]["user"] = [];
// skillMap[skill]["user"].push(user);
skillMap[skill]["count"] = 0;
}
skillMap[skill]["user"].push(user);
skillMap[skill]["count"] += 1;
// }
});
return Object.keys(skillMap).map(key => [
{
skill: key,
...skillMap[key]
}
]);
};
let array=[];
let user_Array=[];
let value_exist=false;
for(let i=0,len=endorsements.length;i
const getSkills = (endorsements) => {
const endorsementsMap = endorsements.reduce((accum, curr) => {
const { skill, user } = curr;
if (accum.has(skill)) {
accum.set(skill, [...accum.get(skill), user]);
} else {
accum.set(skill, [user]);
}
return accum;
}, new Map());
let result = [];
for (let [skill, user] of endorsementsMap.entries()) {
result.push({
skill,
user,
count: user.length || 0
});
}
return result;
};
const en = endorsements.reduce((acc, { skill, user }) => {
if (!acc[skill]) {
acc[skill] = { skill, users: [user], count: 1 };
} else {
acc[skill].users.push(user);
acc[skill].count = acc[skill].count + 1;
}
return acc;
}, {});
const enArray = Object.values(en);
enArray.sort((a, b) => b.count - a.count);
return enArray;
getSkills = (endor) => {
let result = []
let hash = {}
for ( let i = 0;i b[1].length - a[1].length)
for (let i = 0; i < hash.length;i++){
let obj = {skill:hash[i][0], user: [],count:0} // {skill:'css'}
for( let j = 0; j < hash[i][1].length;j++){
obj.user.push(hash[i][1][j])
obj.count++
}
result.push(obj)
}
return result
}