Merci pour ce genre de vidéo Enzo! même si ce n'est pas évident pour les personnes un peu novice, ce sont des concepts qu'il faut effectivement maitriser notamment pour ceux qui souhaite bosser avec des Framework JS! Continue ce genre de vidéo, je pense qu'elles vont aider pas mal de monde à progresser!
Le trie par insertion est bien pour une petite quantité de données mais sa complexité O (n²) asymptotique le rend quadratique ce qui le rends plus lent sur un grand tableau. C’est bizzare que la fonction sort() n’utilise pas des algos comme Quickshort ou fusion qui sont les plus rapide actuellement. De toute manières ont peut toujours optimisé le trie en stockant des moyennes déja calculé dans un tableau ( Mémoïsation) pour gagner du temps d’execution!
L'algo de base est bien s'il y a peu d'élève, mais il vaut mieux utiliser un pré-calcul et stockage de la moyen comme tu le proposes s'il y a beaucoup de donnée : const sortedStudents = arr => { arr.forEach(a => a.moy = a.grades.reduce((acc, cur) => acc + cur) / a.grades.length); arr.sort((a, b) => b.moy - a.moy); arr.forEach(a => delete a.moy); // pour effacer toute traces :) return arr; };
Pour moi qui n'ai pas trop l'habitude de coder en JavaScript, ça m'a fait un peu beaucoup d'informations d'un coup. Entre les reduce, sort et fonctions fléchées, j'ai du mal à bien tout saisir
Merci pour l'explication au top comme d'hab. 👍
Petit challenge en plus pour appliquer : retourner chaque tableau de note trié croissant 😉
{ name: 'Sara', grades: [ 10, 12, 14, 14, 15, 19 ] },
{ name: 'Jack', grades: [ 10, 12, 14, 18, 20, 4 ] },
{ name: 'Ana', grades: [ 11, 12, 14, 14, 14, 3 ] },
{ name: 'Tom', grades: [ 1, 2, 3, 5, 7, 9 ] }
Merci pour ce genre de vidéo Enzo! même si ce n'est pas évident pour les personnes un peu novice, ce sont des concepts qu'il faut effectivement maitriser notamment pour ceux qui souhaite bosser avec des Framework JS!
Continue ce genre de vidéo, je pense qu'elles vont aider pas mal de monde à progresser!
Merci pour cet exercice et l'explication très claire de la résolution.
Le petit exercice du jour qui fait plaisir! Merci pour le taff ! :)
Le trie par insertion est bien pour une petite quantité de données mais sa complexité O (n²) asymptotique le rend quadratique ce qui le rends plus lent sur un grand tableau. C’est bizzare que la fonction sort() n’utilise pas des algos comme Quickshort ou fusion qui sont les plus rapide actuellement. De toute manières ont peut toujours optimisé le trie en stockant des moyennes déja calculé dans un tableau ( Mémoïsation) pour gagner du temps d’execution!
D’ailleurs tu as fais des études informatiques où tu as appris tout sur le tas? Quel est ton parcours ? J'adore tes vidéos 😉
Sur le dernier exemple je ne trouve pas comment console.log le résultat ( la fonction simplifiée ) ?
Merci beaucoup
merci ! super
Bon ben moi je me suis compliquée la vie, comme d'habitude. J'ai ajouté une propriété moy aux objets et j'ai classé après :
{
"moy": 14,
"name": "Sara",
"grades": [10,12,14,15,14,19 ]
}
Et comme j'ai pas utilisé reduce, ça fait juste 15 lignes de trop !!!!! :)
Voici ma logique tordue :
const students = [
{ name: "Tom", grades: [1, 3, 5, 9, 2, 7] },
{ name: "Jack", grades: [20, 4, 18, 10, 14, 12] },
{ name: "Ana", grades: [11,14,3,14,12,14] },
{ name: "Sara", grades: [10,12,14,15,14,19] },
]
function average(nums) {
let average = 0;
for(const num of nums) {
average += num/nums.length;
}
return average;
}
function sortedStudents(arr) {
let newArr = []
arr.forEach(student => {
const averageS = (average(student.grades))
const studentsObj = Object.assign({moy: averageS}, student)
newArr.push(studentsObj)
console.log(newArr.sort((a,b) => b.moy - a.moy));
return newArr.sort((a,b) => b.moy - a.moy)
})
}
sortedStudents(students)
L'algo de base est bien s'il y a peu d'élève, mais il vaut mieux utiliser un pré-calcul et stockage de la moyen comme tu le proposes s'il y a beaucoup de donnée :
const sortedStudents = arr => {
arr.forEach(a => a.moy = a.grades.reduce((acc, cur) => acc + cur) / a.grades.length);
arr.sort((a, b) => b.moy - a.moy);
arr.forEach(a => delete a.moy); // pour effacer toute traces :)
return arr;
};
Pour moi qui n'ai pas trop l'habitude de coder en JavaScript, ça m'a fait un peu beaucoup d'informations d'un coup.
Entre les reduce, sort et fonctions fléchées, j'ai du mal à bien tout saisir
Courage, ça fait du bien d'être perdu parfois 👍
Merci pour l'exo voici mon algo
Voir plus = spoil
*
*
*
*
*
*
*
function sortedStudents(arr) {
return arr.sort((a, b) => {
const moyenneCurrent = b.grades.reduce((old, current) => old + current, 0);
const moyenneOld = a.grades.reduce((old, current) => old + current, 0);
return moyenneCurrent < moyenneOld ? -1 : 1;
})
}
Il lira ce genre de choses🤣🤣🤣🤣🤣
Excellent exercice d'algo.... mais je sais pas si le plus difficile c'est de suivre ton raisonnement ou t'as diction supersonique 😢😅