[JavaScript] un khey pour m'expliquer ça?

El-Other60
2020-08-20 16:19:31

Je fait ce cours pour essayer de comprendre un peu le JS https://openclassrooms.com/fr/courses/6175841-apprenez-a-programmer-avec-javascript/6279223-travaillez-sur-les-parametres-et-les-valeurs-de-retour

Mais j'ai rien compris à la pratique, en regardant la solution je vois

const calculateAverageRating = (ratings) => {

if(ratings.length === 0) {
return 0;
}

let sum = 0;
for (let rating of ratings) {
sum += rating;
}

return sum / ratings.length;

}

Et je comprends absolument rien :hap: un khey pourrait m'expliquer? :(

jean-q
2020-08-20 16:38:47

Tu as un fonction nommée "calculateAverageRating", qui lorsqu'elle est appelée quelque part dans le code reçoit un paramètre, ici "ratings", qui je l'imagine est une liste de rating.

Premier test (le "if"), regarde si cette liste est vide, si oui, la fonction s'arrête (ne passe pas dans les lignes suivantes et retourne "0" comme résultat.

Si elle n'est pas vide, la fonction continue son exécution. Une variable "sum" est déclarée et initialisée à zéro.
La boucle "for" permet de parcourir tous les éléments de ta liste "ratings" pour ajouter chaque rating contenu dans la liste dans la variable "sum".

Finalement, tu obtiens une certaine valeur dans "sum". Cette valeur est divisée par la taille de ta liste pour obtenir la moyenne.

C'est comme si ta liste "ratings" contenait :
15, 16, 10, 12, 14 comme "rating"

"sum" contient au total l'addition de tout celà, soit 67
et donc tu termines par 67 / 5 = 13.4 de moyenne

StopLe410svp
2020-08-20 16:40:19

J'aurai pas dit mieux :ok:

Iterer
2020-08-20 16:42:24

const calculateAverageRatingReduce = (ratings) => {
if(!ratings.length) {
return 0;
}
return ratings.reduce((a, r) => a + r, 0) / ratings.length;
}

Plus propre. :ok:

Iterer
2020-08-20 16:47:03

En one-liner :

const s=e=>e.length?e.reduce((e,n)=>e+n,0)/e.length:0;

Utilisation :

s([0, 10]);

jean-q
2020-08-20 16:48:45

AYAAAA Iterer je pense qu'il voulait comprendre tranquillement sa fonction, là il a dû tomber dans les pommes avec ce que tu lui proposes :rire:

Pytha_Gor1
2020-08-20 16:51:47

Le 20 août 2020 à 16:47:03 Iterer a écrit :
En one-liner :

const s=e=>e.length?e.reduce((e,n)=>e+n,0)/e.length:0;

Utilisation :

s([0, 10]);

Wow :o
Tu es un web dev ?

Iterer
2020-08-20 16:56:43

Le 20 août 2020 à 16:51:47 Pytha_Gor1 a écrit :

Le 20 août 2020 à 16:47:03 Iterer a écrit :
En one-liner :

const s=e=>e.length?e.reduce((e,n)=>e+n,0)/e.length:0;

Utilisation :

s([0, 10]);

Wow :o
Tu es un web dev ?

Fullstack 2/3 compétences fortes et d'autres moins bonnes.

Pytha_Gor1
2020-08-20 17:08:29

Le 20 août 2020 à 16:56:43 Iterer a écrit :

Le 20 août 2020 à 16:51:47 Pytha_Gor1 a écrit :

Le 20 août 2020 à 16:47:03 Iterer a écrit :
En one-liner :

const s=e=>e.length?e.reduce((e,n)=>e+n,0)/e.length:0;

Utilisation :

s([0, 10]);

Wow :o
Tu es un web dev ?

Fullstack 2/3 compétences fortes et d'autres moins bonnes.

Je veux web dev très rapidement, j'ai pas le temps de devenir expert JS, ça suffit si je go framework React directement ? Les concepts ont l'air simple, y'a de bons cours sur (pirate) Udemy :)

Iterer
2020-08-20 19:08:20

Le 20 août 2020 à 17:08:29 Pytha_Gor1 a écrit :

Le 20 août 2020 à 16:56:43 Iterer a écrit :

Le 20 août 2020 à 16:51:47 Pytha_Gor1 a écrit :

Le 20 août 2020 à 16:47:03 Iterer a écrit :
En one-liner :

const s=e=>e.length?e.reduce((e,n)=>e+n,0)/e.length:0;

Utilisation :

s([0, 10]);

Wow :o
Tu es un web dev ?

Fullstack 2/3 compétences fortes et d'autres moins bonnes.

Je veux web dev très rapidement, j'ai pas le temps de devenir expert JS, ça suffit si je go framework React directement ? Les concepts ont l'air simple, y'a de bons cours sur (pirate) Udemy :)

React/Angular honnêtement c'est good.

Dupons
2020-08-20 19:09:59

Quel enfer le js

dontrajx
2020-08-20 19:10:37

calcul de moyenne khey, cependant tellement optimisable de x façon differente que ça fait mal au coeur que c'est présent sur un tuto

Iterer
2020-08-20 19:10:43

Le 20 août 2020 à 19:09:59 Dupons a écrit :
Quel enfer le js

Pour ça Angular au moins c'est du ts (c'est pas ouf mais c'est mieux) :(

MarlouPompette
2020-08-20 19:11:39

Le 20 août 2020 à 19:10:37 Dontrajx a écrit :
calcul de moyenne khey, cependant tellement optimisable de x façon differente que ça fait mal au coeur que c'est présent sur un tuto

Tu commences pas par des algo récursif quand tu commences à coder :hap:

Flo318
2020-08-20 19:13:34

Vu le code que tu ne comprends pas, ce n'est pas JS le souci, mais tes bases en algorithmique.
Pas la peine d'apprendre un langage si tu ne sais pas programmer en pseudo-code.

b777x
2020-08-20 19:14:33

Le 20 août 2020 à 19:13:34 Flo318 a écrit :
Vu le code que tu ne comprends pas, ce n'est pas JS le souci, mais tes bases en algorithmique.
Pas la peine d'apprendre un langage si tu ne sais pas programmer en pseudo-code.

+1

ultrachibre2
2020-08-20 19:16:08

Le 20 août 2020 à 16:47:03 Iterer a écrit :
En one-liner :

const s=e=>e.length?e.reduce((e,n)=>e+n,0)/e.length:0;

Utilisation :

s([0, 10]);

Propre. Surement pas compatible avec IE par contre le reduce.

DewFoll
2020-08-20 19:17:20

Le 20 août 2020 à 19:09:59 Dupons a écrit :
Quel enfer le js

Mais tellement +1 :(

danuiu
2020-08-20 19:18:32


static int calculerMoyenne(int[] liste){
int note=0;
int l=liste.length();
if(l==0){
return 0;
}
for(int i=0;i<l;i++){
s+=liste[i];
}
return s/l;
}

Une solution en Java.

La fonction prend en paramètre un tableau de liste de notes par exemples, calcule la somme de toute les notes et renvoie la moyenne générale, aussi simple que ca.

danuiu
2020-08-20 19:23:22

Comme tu peux le voir, le java est beaucoup plus élégant que le javascript

Infos
Gestion du forum

contact@geevey.com

API disponible. Utilisez le paramètre "api" en GET, peu importe le contenu, sur une page du site.

Notes

    Partenaire: JVFlux
    Ce site n'est pas associé à Jeuxvideo.com ou Webedia. Nous utilisons seulement des archives publiques.
    Il est inutile de me spammer par e-mail pour supprimer un topic. Au contraire, en conséquence, je mettrais votre topic dans le bloc ci-dessous.
Non-assumage
    Personne n'a pas assumé de topic pour le moment.