J'ai zéro expérience en utilisant JavaScript et pourrait vraiment utiliser de l'aide. C'est aussi ma première publication sur la pile.
J'ai la liste suivante des étudiants: p> Les instructions sont de renvoyer les noms suivants triés par groupe comme suit: p> Qu'est-ce que j'ai essayé jusqu'à présent est: p> { 'javascript,html,css,c#': 'John',
'javascript,java,c,c#,c++,html': 'Brian',
'c,c++,go,rust': 'Michael' }
3 Réponses :
Itérer sur chacun des compétences code> code> dans le p> Réduire code>. Testez pour voir si les compétences étant itératées sont sur la carte d'abord. Si ce n'est pas le cas, définissez sa valeur sur le tableau vide. Ensuite, appuyez sur le nom de l'étudiant à celui-ci:
var student = [{
id: 0,
name: "John",
skills: ["javascript", "html", "css", "c#"]
},
{
id: 1,
name: "Brian",
skills: ["javascript", "java", "c", "c#", "c++", "html"]
},
{
id: 2,
name: "Michael",
skills: ["c", "c++", "go", "rust"]
}
];
function skills(student) {
return student.reduce(function(map, { name, skills }) {
skills.forEach((skill) => {
if (!map[skill]) {
map[skill] = [];
}
map[skill].push(name);
});
return map;
}, {});
}
console.log(skills(student));
Merci beaucoup, c'était la syntaxe dans le forach () que j'avais tout ce qui tort. Maintenant, j'ai juste besoin de comprendre comment trier le résultat par ordre alphabétique.
Essayez ceci. et le problème de votre code est que vous traitez Vous devez itérer obj.skills code>, qui est un tableau à tort.
Prendre un tableau car une clé de carte ne pouvait que travailler sans exception est parce que JavaScript l'évalue comme une chaîne.
obj.skills cod> et mettre le nom des élèves dans le tableau au lieu de la réaffecter au lieu de la réaffecter. , Par conséquent, j'ai utilisé
push code> méthode. p>
Ah, je vois ce qui se passe mal maintenant. Lorsque vous essayez d'utiliser la fonction foreach (), j'ai eu la mauvaise syntaxe à l'intérieur de la parenthèse. c'est à dire. "Compétences => {compétences: nom". ... La convention de dénomination était un peu déroutante lorsque j'ai essayé avant la main.
"Compétences => {compétences: nom" Cette syntaxe s'appelle Fonction de flèche code>, qui est similaire à C ++ Lambda Expression. Dans ce cas, il est complètement égal à "fonction (compétences) {}".
Si vous êtes dans Node & ES2018 +, vous pouvez utiliser https: //www.npmjs. com / emballage / fluent-iterérable .
Ajoutez-le comme une dépendance à votre package.json Fichier: P>
console.log( fluent(student) .flatten(st => st.skills.map(sk => ({ name: st.name, skill: sk }))) // => [ { name, skill }, .. ] .group(o => o.skill) // => [ { key: skill, values: [ name, .. ] }, .. ] .toObject( // => { skill: [ name, .. ], .. } grp => grp.key, grp => fluent(grp.values).map(o => o.name).toArray() ) );