3 méthodes JavaScript à connaître absolument : 25 min de Tutoriel JavaScript

Поділитися
Вставка
  • Опубліковано 20 гру 2024

КОМЕНТАРІ •

  • @Bla-cken
    @Bla-cken 2 роки тому +16

    J’étais bluffé au moment de la solution sur le problème des salaires, vraiment excellent ! Ça me donne presque envie de refacto tout mon code et remplacer mes boucles par ces méthodes quand c’est possible !

    • @codeursenior
      @codeursenior  2 роки тому +7

      Au top ! J'espère que vous pourrez tester ça prochainement. Par contre, voyez ça comme une nouvelle habitude à prendre plutôt que de se lancer dans des chantiers de refactoring de 3 jours. Ce sera plus "digeste". 🙂
      Bon développement,
      Simon.

    • @adjindong-un7cc
      @adjindong-un7cc Рік тому

    • @adjindong-un7cc
      @adjindong-un7cc Рік тому

  • @audweb5193
    @audweb5193 Рік тому +4

    Super vidéo ! Propre, efficace donc MERCI beaucoup. Pour les valeurs max et min, j'ai trouvé cette option avec Math : const maxValueArr = Math.max(...someArr); puis :
    const minValueArr = Math.min(...someArr);

    • @ggousier
      @ggousier 4 місяці тому

      J'ai fait pareil ! 😉 J'ai cherché la solution plus concise possible.

  • @crvincent3799
    @crvincent3799 2 роки тому +8

    Très bonne explication, notamment pour reduce!
    D'ailleurs, je sais que le but est de montrer la fonction reduce, mais au sujet des max et min, on peut faire encore plus concis:
    const maxValueArr = Math.max(...arr);
    const minValueArr = Math.min(...arr);

    • @codeursenior
      @codeursenior  2 роки тому +1

      100% d'accord. 👍

    • @philousk9482
      @philousk9482 2 роки тому

      Désolé de ma question néophyte, mais que veux dire les 3 points entre les crochets ? C’est vraiment le code ou on est supposé les changer par une valeur quelconque selon la situation ?

    • @Jeireme
      @Jeireme Рік тому +2

      @@philousk9482 oui les trois petits points sont nécessaires et ne peuvent être supprimés. En revanche "arr" est le nom de ton tableau, donc si tu as nommé le tien "numbers" il faudra écrire "Math.max(...numbers)" 😊

    • @Jeireme
      @Jeireme Рік тому +3

      @@philousk9482 Sinon pour répondre à ta question concernant le sens caché derrière ces trois petits points "..." il s'agit d'un opérateur de propagation : il est utilisé pour étendre un tableau ou un objet en tant qu'arguments séparés. Par exemple ici, en écrivant "Math.max(numbers)" on envoie un tableau en argument "Math.max([1, 2, 3, 4, 5])" et ça ne fonctionnera pas. Mais si tu écris à la place "Math.max(...numbers)" ce sera comme si tu écrivais juste des nombre en arguments "Math.max(1, 2, 3, 4, 5)" et cette fois-ci tout fonctionnera parfaitement bien

  • @frhelix
    @frhelix 2 роки тому +26

    Hello Simon, belle initiative de vouloir initer aux bases de js
    Cependant, une coquille que j'ai relevé : pour l'exo sur les salaires, tu effectues un map avec user.salary += 1000, qui a pour conséquence de modifier l'array de base, userList. Il serait préférable d'utiliser '+' tout simplement.
    Cela va un peu dans le sens contraire de ce que tu expliques en milieu de vidéo quand tu parles de .map( ) et d'éviter les effets de bord ... ;)

    • @codeursenior
      @codeursenior  2 роки тому +5

      Ouuups ! Merci François pour avoir relevé la coquille, j'espère que les autres liront ton message. 😉
      Bon développement,
      Simon.

    • @fredericlossignol3874
      @fredericlossignol3874 Рік тому +1

      Non, map() ne modifie pas le tableau de base, il renvoie un nouveau tableau sur lequel il peut travailler avec la fonction reduce juste derrière. Le tableau de base ne bouge pas, zéro effet de bord tout est OK 👌
      Définition : La méthode map() crée un nouveau tableau avec les résultats de l'appel d'une fonction fournie sur chaque élément du tableau appelant.

    • @frhelix
      @frhelix Рік тому +5

      @@fredericlossignol3874 même si map te retourne un nouvel array, les paramètres de son callback ne sont pas immutables. Donc si tu modifies une propriété d'un objet dans le callback, alors tu modifies l'array initial également (et c'est le cas ici avec '+=').

    • @gabycazquens304
      @gabycazquens304 7 місяців тому

      Ma fonction pour le sum est environ 3.7x plus rapide. Une version wasm avec rust pourrait être encore plus rapide.
      function get_salary_sum(user_list){let sum = 0;for (let user of user_list) {if (user.gender === 'M'){sum += user.salary + 1000}}return sum}
      La version ci-dessous pour savoir si un nombre est impair et légèrement plus rapide .
      function is_odd(number) {return (number & 0x1) === 0x1}
      Faire de la manipulation de tableaux sans prendre en compte les performances, ce n'est pas très professionnel.

  • @souissinidhal
    @souissinidhal Рік тому

    Salut a tous, Merci Simon pour ce tuto c clair et net , just pour une mise en forme que je trouve plus simple : const maxValueArr = Math.max(...somArr); Bonne continuation !!!

  • @joannybernardeau8691
    @joannybernardeau8691 Рік тому

    Bonjour je viens de découvrir cette vidéo car je suis toujours en apprentissage. Et dans le cadre d'amélioration de mon code je viens aussi de comprendre les objets itérables qui est pour moi aussi une autre solution. Certes cette vidéo m'a permis de revoir des notions, merci

  • @atheckgabriel8532
    @atheckgabriel8532 Рік тому +1

    Salut simon !!!
    Très belle vidéo.
    Pour l'exercice 3, concernant le calcul de la valeur maximale ou minimale du tableau.
    On pouvait aussi faire simplement ceci.
    const max = Math.max(...arr);
    const min = Math.min(...arr);

    • @codeursenior
      @codeursenior  Рік тому +1

      Hello, oui tout à fait. Le but est pédagogique, mais Max et Mix sont des raccourcis de syntaxe de reduce beaucoup plus adaptés dans ce cas. 👍

  • @GeofreyvanHecke
    @GeofreyvanHecke 2 роки тому +9

    Dans l'exercice suggéré à la fin, le map est superflu. En effet, on applique un filter pour ne prendre que les hommes mais ensuite on peut faire un reduce où la fonction est (menSalaryTotal + 1000) + menSalary.... En se passant du map, on fait l'économie de devoir créer en mémoire un tableau intermédiaire... Ce qui, sur un grand jeu de donnés peut être salvateur pour les performances 😉

    • @codeursenior
      @codeursenior  2 роки тому +2

      Hello Geofrey, l'objectif pédagogique des vidéos peut parfois faire un peu de mal au côté performance. Mais dans un deuxième temps, après avoir assimilé ce qui est présenté dans cette vidéo, bien sûr le retour est 100% pertinent. 😉

    • @GeofreyvanHecke
      @GeofreyvanHecke 2 роки тому +3

      @@codeursenior je disais cela pour ceux qui nous lisent éventuellement afin qu'ils sachent qu'il est possible de faire une économie de performance substantielle 😉

    • @codeursenior
      @codeursenior  2 роки тому +5

      J'espère qu'ils pourront te lire et bénéficier du conseil alors. Merci ! 👍

    • @Jeireme
      @Jeireme Рік тому

      En approfondissant un peu l'exercice je suis arrivé à la même conclusion, pour ceux que ça intéresse voici le code :
      const sumMenSalary = userList
      .filter((user) => user.gender === "M")
      .reduce((sum, user) => sum + user.salary + 1000, 0);

    • @kaventapin9374
      @kaventapin9374 Рік тому

      Parfaitement correct, mais tu doit donner une valeur de départ de 0 (second paramètre de la fonction reduce), si non, le premier élément de la liste n'auras pas de salaire bonifier. c'est un peut compliqué a comprendre/expliqué pour les néofite.

  • @samirbouakaz5145
    @samirbouakaz5145 2 роки тому

    Bonjour Simon j'ai commencé une formation de développeur web, et tes vidéos sont TOP. Bien expliquées, très claire .... Ca devient facile et sa donne du courage pour l'apprentissage. Merci

    • @codeursenior
      @codeursenior  2 роки тому

      C'est un plaisir d'entendre ça Samir. Bon courage pour ta formation de développeur et à bientôt sur la chaîne j'espère !
      Simon.

  • @kaventapin9374
    @kaventapin9374 Рік тому

    Très bien comme vidéo. tu donne de bonne exemple et d'explication!!!
    Juste pour mettre une basse, je suis une programmeur senior et je comprend pourquoi tu l'explique comme ça. Mais juste pour pinailler un peu :
    pour exo #3 il a encore plus simple en javascript pour spécifiquement min et max « Math.min.apply(null, ARRAY) » dont ARRAY est la liste contenant les nombres.

    • @codeursenior
      @codeursenior  Рік тому

      Exact ! Effectivement, il y a la partie pédagogie dans le Video, mais on peut bien sûr pousser la chose 👍 bon code ! Simon.

    • @Kyro001010
      @Kyro001010 Рік тому

      Tout à fait ! On pourraitégalement utiliser le tableau sous forme déstructurée via le spread operator si on le souhaite "Math.max(...array)"

  • @saminserge2674
    @saminserge2674 2 роки тому +2

    Vraiment merci , c'est tres excellent cette maniere de coder, l'explication et l'exercice sont de taille pour mieux comprendre map(), filter() et reduce() tout simplement.

    • @codeursenior
      @codeursenior  2 роки тому +2

      Super, c'est top. J'espère vous avoir donné envie de tester ces méthodes prochainement !
      Simon.

  • @thiernoamadousow191
    @thiernoamadousow191 2 роки тому

    vraiment frère c'est la meilleur manière de factoriser son code javascript avec les histoires de for, while ou forEach on na plus besoin de ça et c'est très bien et facile a comprendre

    • @codeursenior
      @codeursenior  2 роки тому

      Exactement !
      Merci pour ton message et à bientôt,
      Bon développement,
      Simon.

    • @thiernoamadousow191
      @thiernoamadousow191 2 роки тому

      @@codeursenior MERCI Bien

    • @codeursenior
      @codeursenior  2 роки тому

      @@thiernoamadousow191 De rien ! Bon développement à toi. 😉

  • @shadowysuper-coder6120
    @shadowysuper-coder6120 Рік тому

    J'ai enfin retrouvé cette vidéo ! Merci beaucoup, le top pour apprendre ou revoir Map Filter Reduce !

    • @codeursenior
      @codeursenior  Рік тому

      Hello, oui il faudrait que modifie la vignette : N’utiliser pas la boucle For !

  • @severindindji3623
    @severindindji3623 2 роки тому +1

    tu m'as fait pleurer 🥺😭... grace a toi je vais finalement devenir un developpeur Javascript.. la meilleur video que j'ai regarder. merci enormement

    • @codeursenior
      @codeursenior  2 роки тому +3

      Félicitation à toi @Severin, tu montres l'exemple à tout le monde, il ne faut rien lâcher ! 👊👊👊
      Bon développement et bon apprentissage pour la suite,
      À bientôt,
      Simon.

    • @severindindji3623
      @severindindji3623 2 роки тому +2

      @@codeursenior merci 🙏 énormément 😥je pense que je vais te devoir ma carrière de développeur

    • @codeursenior
      @codeursenior  2 роки тому +3

      Ce sera un honneur, soit un exemple pour les autres développeurs de la chaîne. 👊

  • @gabrielamare563
    @gabrielamare563 2 роки тому +1

    @16:52 : const isOddValueArr = someArr.some(e => e % 2 != 0) permet de s'arrêter dès qu'on a la première valeur odd, ça évite de calculer les N éléments de l'array (mieux pour les perfs)
    dans le même genre il y a someArr.every qui vérifie que tous les éléments de l'array vérifient une condition

    • @codeursenior
      @codeursenior  2 роки тому

      Tout à fait, n'hésitez pas à abuser de some() et every(), c'est un régal à utiliser.
      (Par rapport à la vidéo, some() et every() sont des variantes de reduce() au niveau de la réflexion. On transforme un tableau en une valeur unique, à savoir un booléen)

  • @Jeireme
    @Jeireme Рік тому

    Merci Simon pour ces excellents exercices et pour tes conseils, j'écrirai toutes mes méthodes reduce de cette manière maintenant ! (14:59)

  • @fabiendesnoues3497
    @fabiendesnoues3497 2 роки тому +1

    tes explication sont insane ! simple et efficace avec des cas concret ! Je le faisait deja avant mais de voir comment tu l'explique c'est super propre

    • @codeursenior
      @codeursenior  2 роки тому

      Au top, merci pour ton retour, c'est encourageant comme jamais. 👌
      Bon développement,
      Simon.

  • @sabritanich2790
    @sabritanich2790 8 місяців тому

    Bonjour, excellent contenus, merci a toi pour cette pédagogie.

    • @codeursenior
      @codeursenior  5 місяців тому

      Au top, merci pour ton retour.

  • @renedigitale
    @renedigitale 4 місяці тому

    Super vidéo ! Propre, efficace et clair merci pour le partage

    • @codeursenior
      @codeursenior  4 місяці тому

      Au top, je compte sur vous pour faire la propagande de map, filter et reduce !

  • @alexandreleriche4239
    @alexandreleriche4239 9 місяців тому

    Merci pour cette vidéo tu m'as triplement convaincus ! (m,f,r)

    • @codeursenior
      @codeursenior  9 місяців тому

      Au top, je compte sur vous pour continuer la propagande : map, filter, reduce > for…loop

  • @romeogbongbon3014
    @romeogbongbon3014 2 роки тому

    Je te remercie pour ton travail qui aide réellement.

    • @codeursenior
      @codeursenior  2 роки тому

      Merci pour ton retour, c'est un plaisir d'entre ça !
      Bon développement,
      Simon.

  • @pierrelouispichereau9918
    @pierrelouispichereau9918 2 роки тому

    ohhh mec ca doit faire deux jours que je n'arrive pas résoudre un problème js mais la tu me sauve la vie

    • @codeursenior
      @codeursenior  2 роки тому +1

      Hello Pierre-Louis, c'est un plaisir d'avoir pu débloquer un autre développeur, même d'un millimètre ! 👍

  • @naimaelmoudden2881
    @naimaelmoudden2881 2 роки тому

    je voulais vous remercier pour tous vous videos.👏

  • @aloascreations4916
    @aloascreations4916 2 роки тому

    Simple Efficace ! Merci pour cette super vidéo :-)

  • @m2a_hsn
    @m2a_hsn 2 роки тому +3

    Super vidéo et merci cependant j'ai une question au niveau des performances parce que j'imagine qu'à un moment ou un autre ces fonctions font un bien une boucle pour parcourir tout les éléments donc sachant qu'on peut résoudre l'exercice des salaires avec une boucle, il ne reste pas plus intéressant que filter, map et reduce cumulé?

    • @codeursenior
      @codeursenior  2 роки тому +2

      Hello effectivement vous avez raison du point de vue de la performance pure. Cependant je proligie toujours la lisibilité du code quoi qu’il arrive. Surtout dans le développement frontend où on ne manipule jamais plus de 10 ou 20 données à la fois pour les présenter dans lInterace. Selon moi Map, filter et reduce me permette de mieux exprimer ce que je fais avec mon code qu’une boucle for. Voila ! 👍

  • @renedigitale
    @renedigitale 4 місяці тому

    Excellent, MERCI beaucoup

  • @Sql37
    @Sql37 2 роки тому

    Je ne suis qu'à la résolution de l'exo1 ( et bien entendu j'ai fais une boucle pour doubler les éléments... ) et j'apprécie tellement tes explications poussées sur le pourquoi utiliser map() !

    • @Sql37
      @Sql37 2 роки тому

      Eh oui des vidéos approfondie sur des concepts de base c'est vrmt d'la plus value !

    • @codeursenior
      @codeursenior  2 роки тому +1

      Merci pour votre message, la team Map s’agrandie ! 🙂

  • @davidcaruana229
    @davidcaruana229 2 роки тому

    Merci pour l'explication des 3 méthodes ... Je les utilises souvent mais des fois je retrouve a faire un "filter" au lieux d'un "map" et l'inverse mais avec ton explication je ne me tromperais plus jamais :)

    • @codeursenior
      @codeursenior  2 роки тому

      Merci pour ton message @David, c'est top pour la distinction map/filter !
      Bon développement,
      Simon.

  • @gobajoseph5064
    @gobajoseph5064 2 роки тому +1

    Super toujours un plaisir de regarder tes vidéos js est un peu complexe mais avc toi ça devient facile .🙏🏼🙏🏼

    • @codeursenior
      @codeursenior  2 роки тому +2

      Merci, ça fait plaisir de lire votre commentaire !
      Bon développement à vous,
      Simon.

  • @Erghan_K
    @Erghan_K 2 роки тому

    Wouah.. je me suis cash abonnée, vraiment expliqué c'est du génie bravo !

    • @codeursenior
      @codeursenior  2 роки тому

      Bienvenu sur la chaîne @Mathieu !

  • @chokdeesam2365
    @chokdeesam2365 Рік тому +1

    Excellente vidéo !
    À tout hasard, est-ce que tu réalises de formation en lignes pour du JS ?
    Tu expliques bien, j'ai tout compris (à part le reduce lié aux salaires, j'ai un peu buggé en mettant un peu de temps pour capter, haha).
    Pour ma part, j'enchaine des tutos en ligne, mais c'est souvent du code débité sans réel approche pédagogique et explicative.
    Du coup, j'ai l'impression d'en faire des tonnes pour pas vraiment tout comprendre, et ça, c'est vraiment usant, car il suffirait de quelques secondes explicatives pour changer la donne.
    Bref, je découvre ta chaine, et donc je viens de m'abonner. Merci, franchement j'ai l'impression d'y voir plus clair :)

  • @afrikanonyma
    @afrikanonyma Рік тому

    Tu viens just de gagner un nouvelle abonné ... cool !

  • @audweb5193
    @audweb5193 Рік тому

    Super exo, y compris pour la refactorisation du code. J'ai beaucoup appris 👍👍 et merci pour tes exemples concrets. Y a pas à dire, il faut s'entrainer pour que ça devienne un réflexe

  • @philousk9482
    @philousk9482 2 роки тому

    Merci ! Je sens que ça va m’être hyper bénifique et d’une immense joie de te suivre. 😊

  • @Kergari
    @Kergari 2 роки тому

    Excellente video, j'ai appris beaucoup de choses. Merci 😁

    • @codeursenior
      @codeursenior  2 роки тому

      Merci pour votre retour @Kergari !
      Bon développement,
      Simon.

  • @gillesa290
    @gillesa290 2 роки тому +1

    Très clair et très utile. Merci beaucoup.

    • @codeursenior
      @codeursenior  2 роки тому +1

      Merci bien @Gilles pour votre retour.
      Bon développement,
      Simon.

  • @kunited9
    @kunited9 2 роки тому

    Superbe explication des fondamentaux

    • @codeursenior
      @codeursenior  2 роки тому

      Au top, merci pour votre retour. 👍

  • @electrode_kms994
    @electrode_kms994 Рік тому

    je suis étudiant et j'utilise deja cette syntax et les methold de l'object array

  • @michaelp137
    @michaelp137 7 місяців тому

    Waouh quelle vidéo ! Merci

    • @codeursenior
      @codeursenior  7 місяців тому +1

      Au plaisir, à bientôt pour une prochaine vidéo !
      Bon code,
      Simon.

  • @x-man8889
    @x-man8889 2 роки тому

    Très fort! Merci beaucoup!

  • @rastapoile
    @rastapoile 2 роки тому +1

    Salut,
    Pour l'exercice 5 l'utilisation de some() était également possible non ?

    • @codeursenior
      @codeursenior  2 роки тому +1

      Si ! En fait fondamentalement some() est une simple optimisation de ... reduce(), c'est-à-dire transformer un tableau en une valeur, ici un booléen. Un bon exercice est de réimplémenté some() avec reduce() ! 😉

  • @freddodudodo5461
    @freddodudodo5461 Рік тому

    Salut, très instructif et bien expliqué, mais j'ai une question concernant la méthode reduce(), je comprend bien l'avantage pour retourner la somme , mais pour la valeur max ou min a t elle un avantage par rapport a écrire ;
    const maxVal = Math.max(...someArr) ; ?
    Bien à vous et encore merci pour vos tutos géniaux ...Et ouep ça vaut le coup..

    • @codeursenior
      @codeursenior  Рік тому +1

      Merci pour votre retour, reduce est présente avec le côté pédagogique en tête ici. Effectivement je recommande Max ou Min pour calculer la valeur respective. Il faut le voir comme un raccourcis de syntaxe par rapport à Reduce. Obtenir une valeur à partir d’une collection.

  • @Green68200
    @Green68200 2 роки тому

    Dans la fonction "toggleAlarmList()" à la ligne 2 (condition de la ternaire) "return isEveryAlarmActive() ?" serait plus juste, non?
    Excellent le fait de prendre des exemples concrets, bonne continuation.

    • @codeursenior
      @codeursenior  2 роки тому

      Hello Eric, si tu me mets le time-link je peux regarder ça rapidement.
      Quoi qu'il en soit tu as surement raison, j'ai tendance à faire un méli-melo entre la prépa de la vidéo/tournage/montage. ^^

    • @Green68200
      @Green68200 2 роки тому

      Hello @@codeursenior à 22:52, soit tu fais appel à la fonction "isEveryAlarmActive()" définie à 22:34 soit tu as défini une variable du même nom?

    • @codeursenior
      @codeursenior  2 роки тому +1

      ​@@Green68200 Ok, j'ai compris. Alors les exemples de code sont plus là pour la compréhension. Cela ne correspond pas forcément à une codebase complète. Tu peux tout à fait stocker le résultat de la méthode `isEveryAlarmActive()` dans une variable temporaire pour un autre calcul ultérieur. 👍

  • @quentinmengue4685
    @quentinmengue4685 2 роки тому

    Franchement juste génial

    • @codeursenior
      @codeursenior  2 роки тому +1

      Merci Quentin !
      Bon développement à toi,
      Simon.

  • @nicoduwebs8601
    @nicoduwebs8601 Рік тому

    Les notions que tu explique sont utiles et extensible à python également.
    Puisque ce langage pour les listes a aussi des méthodes associer pour effectuer certaine action.
    mais j’ai une question la méthode map ne fait elle pas un parcours de la liste et en créant une nouvelle avec les option demander.
    Comme pour filter et réduce également.
    On écrit un code plus propre en utilisant les fonctions que les développeurs du langage ont inclus nativement.
    Mais régulièrement dans les formations ils demandent tous de faire les mécanismes manuellement pour voir le concept dernière.
    Je me demande qu’elle est le plus rapide entre la méthode et le faire manuellement je crois que je vais essayer de voir ça.
    En tout cas tu explique des concept pratique j’ai hâte d’en découvrir d’avantage.

  • @minute_illimitee
    @minute_illimitee 2 роки тому

    La vidéo est très bien et je pense qu'elle aurait été parfaite si tu avais indiqué comment réaliser les exercices depuis la console de navigation.

    • @codeursenior
      @codeursenior  2 роки тому

      Hello, merci pour ton retour. Pouvoir ouvrir la console de votre navigateur : Cmd + Option + C (sur Mac) ou Ctrl + Maj + J (sous Windows).
      Bon développement,
      À bientôt.

  • @jean-bernardsaint-eve3340
    @jean-bernardsaint-eve3340 2 роки тому

    Super vidéo, ça fait un moment que je connais map, filter, reduce, mais j'ai encore un peu de mal à me défaire de mes réflexes "while", mais ça rentre. Avec Reduce j'ai plus de mal, et j'ai un pb avec la valeur initiale de l'accumulateur, pour moi il faudrait l'indiquer obligatoirement

    • @codeursenior
      @codeursenior  2 роки тому

      Bonjour @Jean-Bernard, merci pour ton retour.
      Concernant le reduce(), je vous encourage effectivement à expliciter la valeur de retour, cela se force à réfléchir dans un premier temps, et explicite le fonctionnement du code à la relecture.
      S'obliger à initialiser son accumulateur me semble donc une bonne pratique. 👍 (Même si j'ai pris des raccourcis avec le temps !)
      Bon développement pour la suite,
      Simon.

  • @dechamps777
    @dechamps777 Рік тому

    Hello :)
    Je me permet de te poser une (peut-être bête) question:
    Si j'ai bien compris, la méthode *filter* parcourt tout le tableau. Est-ce que cela ne serait pas mieux, au niveau des performances, lorsque l'on cherche à déterminer si au moins un valeur de notre tableau remplit une condition, de faire une boucle qui s'arrête à la première valeur remplissant la condition?
    Est-ce qu'utiliser une méthode comme *filter* ne va pas impacter, de manière significative, les performances lorsque l'on effectue cette opération sur un tableau contenant plusieurs milliers de données?
    J'en profite également pour te remercier pour tout ton travail, c'est super intéressant et agréable à suivre :)

    • @codeursenior
      @codeursenior  Рік тому

      Hello, il n'y a pas de questions bêtes.
      Côté frontend, on ne manipule presque jamais des tableaux de plusieurs milliers d'entrées. La question des performances avec filter, map et reduce est donc négligeable.
      Même si vous avez 1 million d'utilisateurs à afficher, vous utiliserez la pagination pour les afficher 20 par 20, par exemple.

  • @nairolf8333
    @nairolf8333 2 роки тому

    pour isEveryAlarmActive tu aurais put utilisé every qui est prévu pour : return alarms.every(alarm => alarm.checked)

    • @codeursenior
      @codeursenior  2 роки тому

      Hello, si tout à fait ! Ici l'objectif de la vidéo est d'illustrer le fonctionnement de reduce (tableau -> valeur).
      Mais every()/some()/Math.mix/Math.max sont des raccourcis bien pratiques !

  • @karimdiallo6809
    @karimdiallo6809 2 роки тому

    😂😂😂😂😂😂 suis mort de rire. Mais en vrai, nous aimons très bien ta manière d'expliquer les cours.

    • @codeursenior
      @codeursenior  2 роки тому

      Merci pour ton retour @Abdoul ! 👊
      À bientôt j'espère et bon développement,
      Simon.

  • @objectifdevapp9400
    @objectifdevapp9400 2 роки тому

    Bonjour Simon merci pour cette vidéo. Je cherche à sélectionner la value d'un input parmi d'autres input de même classe 'pas d'id, pour des raisons imposées + des buttons sans id également. Le button permettrait de sélectionner la value de l'input, et de la copier. Je parviens à sélectionner toutes les values de tous les input. Et malgré de nombreux essais aves this, je ne parviens pas à sélectionner l'input sur laquelle /lequel je vais cliquer. Si tu as une solution je suis preneuse, merci bcp

    • @codeursenior
      @codeursenior  2 роки тому

      Hello, c'est par ici => ua-cam.com/video/DTIYVffhJuU/v-deo.html

  • @HarryMekam
    @HarryMekam Рік тому

    Monsieur, est-ce que vous pouvez faire une vidéo sur les observables (array asynchonous)

  • @mickaelurien9774
    @mickaelurien9774 2 роки тому +1

    Super vidéo ! Une raison de ne pas utiliser some() pour l'exo #5, avec quelque chose comme : someArr.some(e => e % 2 == 0) ?

    • @codeursenior
      @codeursenior  2 роки тому +1

      Hello Mickaël, 100% d'accord. La seule "raison" est pédagogique. D'abord faire comprendre map/filter/reduce. Ensuite, libre à chacun de creuser et d'aller utiliser les "raccourcis" de reduce (tableau -> valeur unique). Par exemple : every/some/Math.max...etc...
      Bon développement,
      Simon.

  • @Digibot88
    @Digibot88 2 роки тому

    Merci pour la vidéo ! Pour l'exo 5, bon c'est peut-être un peu moins lisible mais je me dis qu'au moins je ne lance qu'un seul traitement de l'array niveau opti : const maxMenSalary = userList.reduce((total, currentUser) => currentUser.gender === 'M' ? total + currentUser.salary + 1000 : total, 0)

    • @codeursenior
      @codeursenior  2 роки тому +1

      Effectivement, ça fonctionne ! 👍
      Peut-être la lisibilité un peu plus costaud à la relecture (ternaire/condition dans un reduce).
      Bon développement pour la suite,
      Simon.

  • @mnenterprise8580
    @mnenterprise8580 2 роки тому

    Très pratiques ces solutions. Merci. Et si tu nous parlais prochainement des Promesse de javascript pour les évènements asynchrones ? Actuellement je fais recours aux callback, mais je cherche une façon de faire plus "pro" !

    • @codeursenior
      @codeursenior  2 роки тому

      Hello ! Je ne pense pas faire de vidéo sur l'asynchrone avec les Promesses. Sur la chaîne, je me concentrerai plutôt sur la programmation réactive et RxJS. C'est une solution que je préfère pour la gestion de traitements asynchrones complexes.
      Bon développement,
      Simon.

  • @gobajoseph5064
    @gobajoseph5064 2 роки тому

    Super j'ai refait les exercices et du coup je trouve ça extrêmement pratique je compte passer a react ceq méthodes sont telle aussi valable labas?

    • @codeursenior
      @codeursenior  2 роки тому +1

      Salut, oui ces méthodes sont 100% Vanilla JavaScript ! Cela vous servira au quotidien que vous soyez développeur React, VueJS ou Angular. 👍
      Bon développement,
      Simon.

  • @MrAzurha
    @MrAzurha 2 роки тому

    super vidéo, très claire et bien expliquée ! J'ai deux questions.
    1°) Dans l'exo 2, le .filter va parcourir le tableau doubleArr 2 fois et créer 2 nouveaux tableaux, y a t-il moyen de créer les deux nouveaux tableau en ne parcourant doubleArr qu'une fois ?
    2°) Dans l'exo 5, si le reduce trouve une oddValue en première position, va t-il devoir finir de parcourir tout le tableau pour renvoyer true ?
    Merci pour le taf.

    • @codeursenior
      @codeursenior  2 роки тому

      Hello @Benoit, merci.
      Voici mes réponses :
      1) Filter permet d'expliciter votre traitement, plutôt que de perdre en lisibilité pour optimiser des nanos secondes que personne ne vous demanderas jamais.
      2) Effectivement, on peut utiliser des méthodes plus optimisés une fois que l'on est à l'aise avec reduce(), comme some() ou every().
      De manière, je pense que l'objectif est de créer du code performant pour les humais (lisibilité) plutôt que pour les machines.
      Bon développement,
      Simon.

  • @ajaya9794
    @ajaya9794 Рік тому

    Merci chef !

  • @azadehrazavi1651
    @azadehrazavi1651 2 роки тому

    merci c'était super efficace :)

    • @codeursenior
      @codeursenior  2 роки тому

      Au top, c'est un plaisir d'entendre ça. Bon développement !

  • @kArTerhns
    @kArTerhns 2 роки тому

    Pour l'exemple avec le map je trouves deux des arguments un peu tiré par les cheveux. Pour la variable intermédiaire on en a pas en utilisant le for..of, et pour le fait que c'est en une seule ligne ça c'est un choix de développement, on peut très bien mettre le for en one liner si ça nous pose un problème de l'avoir sur 3 lignes, et inversement mettre le map sur 3 ligne en ajoutant les bracket dans la fonction anonyme, ce qu'on seras d'ailleurs obligé de faire si on doit faire plusieurs traitement et pas qu'un seul.
    Sinon très intéressants, j'utiliserais certainement moins de boucle désormais, et j'avais jamais vraiment compris le reduce donc merci beaucoup pour ça aussi !

    • @codeursenior
      @codeursenior  2 роки тому +1

      Salut @kArTechns, merci pour ton retour constructif.
      Mes retours rapides :
      - For...of : Tu as tout à fait raison. Je mentionne bien le for{} "nature" dans la vidéo mais il y a d'autres pistes d'améliorations que le map() pour éviter la variable intermédiaire, dont le for...of effectivement.
      - 1 ligne vs 3 lignes : Pas tout à fait d'accord, car faire tenir un traitement for() sur une ligne, ça doit être costaud et surprenant à relire. Une fonction fléchée d'une ligne peut tout à s'écrire sans brackets, c'est une convention répandue. Donc techniquement je suis d'accord avec toi, dans le code du quotidien, je maintiens mon 1 ligne VS 3 lignes. 😉
      Qu'en penses-tu ?
      Au plaisir d'échanger,
      À bientôt,
      Simon.

  • @papoun37
    @papoun37 Рік тому

    Quelques remarques bienveillantes:
    1- .some(e => e % 2 === 0) est plus concis que .filter(e => e % 2 === 0).length > 0
    2- .map() et .filter() ne sont pas sans effet de bord car ils ne dupliquent les éléments du tableau d'origine que si ce sont des primitifs (shallow copy, ou copie par référence des autres types). Dans ton exemple avec les salaires par exemple les salaires du tableau d'origine sont réellement modifiés dans les objets (suffit d'appliquer ta formule pour calculer la somme puis de faire un console log du tableau d'origine, les salaires sont modifiés)
    3- il existe 3 autres méthodes intéressantes dont je me sers chaque jour beaucoup .find(), .every(), et .sort()
    4- A noter aussi que l'objet Map() est aussi un objet intéressant pour travailler sur des listes
    PS: Même après 8 ans dans le métier MDN est mon ami de chaque jour

    • @codeursenior
      @codeursenior  Рік тому

      C’est un complément parfait à la vidéo qui se veux pédagogique et une introduction au traitement des tableaux. Merci pour votre apport !

  • @Vazzou1992
    @Vazzou1992 2 роки тому

    Explications limpides, merci !

    • @codeursenior
      @codeursenior  2 роки тому

      Merci pour ton retour Kevin, bon développement à toi !
      Simon.

  • @romero1745
    @romero1745 2 роки тому

    Bonjour Simon,
    J'apprends l'informatique il y a peu, alors excuse-moi à l'avance si ma question peut-être un peu idiote.
    - Ma question est dans l'exercice #1 (Je comprends ou tu veux en venir), mais je ne comprends pas quand je regarde le résultat sur la console.log je vois qu'il m'affiche le douche [2, 4, 6, 8, 10]. En suivant la logique, je ne devrai pas plutôt avoir deux fois [1, 2, 3, 4, 5] au lieux d'avoir le double ?
    Merci de pouvoir me éclaircir cette logique dans l'informatique comme aussi, merci pour tes contenus :)

    • @codeursenior
      @codeursenior  2 роки тому

      Hello Romero, tu fais bien de poser de question. La seule chose d'idiote, c'est de ne pas poser de question. En fait, la méthode *map* va prendre en paramètre chaque élément du tableau initiale, successivement. Tu obtiendras donc un autre tableau de la même longeur en sortie, mais avec chaque élément transofrmé.
      [1, 10].map(e => e x 2) // [2, 20]
      À bientôt !

  • @abdulkadirguven1173
    @abdulkadirguven1173 2 роки тому

    Merci Simon

  • @plexussolair7716
    @plexussolair7716 Рік тому

    Excellent !

  • @GeofreyvanHecke
    @GeofreyvanHecke 2 роки тому +1

    Dans l'exemple 5 (qui consiste à vérifier si un tableau contient au moins un nombre impaire), la solution présentée n'est pas optimale. En effet, si le premier élément est impair, il est inutile de parcourir le restant dû tableau. Or, ici, tel que présenté, on va devoir avec la fonction filter, parcourir tous les éléments du tableau, jusqu'au bout... Si le tableau contient 100. 000 nombres ca peut représenter une perte de temps conséquente...
    Respectueusement 😉

    • @codeursenior
      @codeursenior  2 роки тому

      Yep, c'est 100% vrai.
      (Pour le contexte, l'objectif prioritaire du code présenté est pédagogique. Une fois que vous avez assimilé ce qui est présenté dans la vidéo, vous pouvez tout à fait suivre la recommandation de Geofrey 👍)

    • @GeofreyvanHecke
      @GeofreyvanHecke 2 роки тому

      @@codeursenior pour ceux qui nous liraient ou pour une prochaine vidéo pédagogique, il y a encore la fonction Array.prototype.some() qui permet de vérifier si un élément du tableau au moins rempli une certaine condition... Cette méthode renvoie "true" dès qu'un élément satisfait le prédicat passé en paramètre et sinon elle retourne "false" (c'est à dire quand aucun élément du tableau satisfait la condition)...

    • @codeursenior
      @codeursenior  2 роки тому +2

      Yes ! N'hésitez pas à regarder du côté de every / some / Math.min /Math.max qui peuvent être plus subtile que d'utiliser reduce à chaque fois. 👍

  • @seb020509
    @seb020509 2 роки тому

    Abdoul Karim a raison t'es trop chaud 😁😁

  • @clairemarchyllie2366
    @clairemarchyllie2366 Рік тому

    Génial!! Merci!!!

  • @rachidamirat9470
    @rachidamirat9470 2 роки тому

    Merci Simon Top…

    • @codeursenior
      @codeursenior  2 роки тому

      Merci pour ton retour Rachid,
      Bon développement,
      Simon.

  • @jeanchristophegomis4650
    @jeanchristophegomis4650 2 роки тому

    Merci Simon!

    • @codeursenior
      @codeursenior  2 роки тому

      De rien, bon développement à toi @Jean Christophe Gomis !
      Simon.

  • @annako5240
    @annako5240 2 роки тому

    Merci frère 😉

  • @vp3275
    @vp3275 2 роки тому

    Pour l'exo 5 tu peux use .some() non ?

    • @codeursenior
      @codeursenior  2 роки тому

      Tout à fait ! 👍
      Mais d'un point de vue pédagogique, some() est simplement un raccourci de syntaxe pour un reduce(). On transforme toujours un tableau en une valeur unique, un booléen en l'occurence.

  • @capurim
    @capurim Рік тому

    Je viens de regarder cette vidéo avec un peu de retard, je me pose une question quant à la correction sur les salaires.
    Tu fais du filter, du map et du reduce. Ok c'est joli, ça fait super bien le taff et on comprend parfaitement. Mais pour moi c'est du joli...
    Perso, j'aurai fait :
    const manSalary = userList.reduce((salary, u) => salary + (u.gender === 'M' ? u.salary + 1000 : 0))
    Une seule ligne, et j'ai pas besoin de parcourir trois fois des tableaux.
    Donc à mon avis, ma solution est plus rapide et moins consommateur.
    Un avis ?
    Merci. :)

  • @-Eric-P-
    @-Eric-P- Рік тому

    Merci pour cette vidéo intéressante. J'ai une question et une remarque.
    La question :
    En terme d'optimisation, quand on veut juste s'assurer de la présence d'une valeur sur des grands tableaux, est-ce qu'un filter suivi d'un length n'est pas plus coûteux qu'un parcours qui s'arrête à la première valeur correcte pour renvoyer un booleen ?
    La remarque :
    Pour ton exo sur le total gagné, je reconnais l'intérêt pédagogique d'avoir voulu utiliser filter, map et reduce, mais je me serais personnellement épargné une ligne (et un parcours de tableau) en virant l'étape map et en incluant l'ajout de 1000 directement dans reduce :
    menSalaryTotal = userList.filter(user => user.gender == 'M')
    .reduce((menSalaryTotal, menSalary) => menSalaryTotal + menSalary + 1000);

  • @damienlopvet4214
    @damienlopvet4214 2 роки тому

    Salut à tous, Pour les salaires je propose ça : court et éfficace :
    const menSalaryTotal = userList.map(user => user.gender === "male" ? {...user, salary: user.salary += 1000} : user)

  • @manucyan
    @manucyan 5 місяців тому

    Salut, si tu ne sais plus si "odd" c'est pair ou impair, tu retiens cette technique : dans le mot "odd", il y a un nombre impair de lettres, et dans even, il y a un nombre pair de lettres

  • @loicgeeraerts
    @loicgeeraerts Рік тому

    Ce serait bien d'indiquer les coquilles/amélioration proposées par François Lx, Allan from Paris et Geofrey van Hecke minimalement dans la description ou (révons un peu) directement dans la vidéo sous forme de "popup".

  • @ulrichnelson3636
    @ulrichnelson3636 2 роки тому

    Merci beaucoup Simon pour cette belle présentation, je l'ai trouvé particulièrement utile pour moi, car je suis un gros consommation des boucles. Par contre, j'ai bien réussi le petit test de la fin avec toujours une préoccupation sur la fonction reduce(). Puisque je me demande bien comment il a pu calculer la somme sans que je lui passe la clé "salary" dans la fonction, parce qu'en ajoutant cette clé, le résultat devient "NaN"
    const sum = userList.filter(user => user.gender == 'M').map(e => e.salary + 1000).reduce((sum, user) => sum + user.salary);

    • @codeursenior
      @codeursenior  2 роки тому +1

      Hello Ulrich, top si vous faites moins de boucles !
      Concernant votre question, c'est parce que dans la première opération map() a tranformé votre tableau de User en un tableau de nombre (les salaires).
      const user = [...] // Tableau d'objets User
      const user = [...].map(user => user.salary); // Tableau de nombres, salaires
      Est-ce que c'est plus clair pour vous ?
      Bon développement,
      Simon.

  • @angelamidev
    @angelamidev Рік тому

    exo3 : pourquoi du coup tu as mis pour le 2ème cas le nom de l'accumulateur à "max" logiquement il devrait être comme tu dis , la valeur que tu attends en sortie non, donc "min" ? (c'est juste du nonmage ;-) )

  • @SamuelEssino
    @SamuelEssino 2 місяці тому

    Salut avez vous une formation complete en javaScript?

    • @codeursenior
      @codeursenior  2 місяці тому

      Hello, pas pour le moment. Si Angular vous intéresse, vous trouverez un workshop gratuit sur le site angularsenior.fr. Bon code, Simon.

  • @julienguichard6624
    @julienguichard6624 Рік тому

    La programmation fonctionnel est assez puissante.

  • @Amano93-i8q
    @Amano93-i8q 10 місяців тому

    bonjour comment rejoindre la formation en prestenciel

    • @codeursenior
      @codeursenior  9 місяців тому

      Bonjour, je ne propose aucune formation pour le moment. Tout est disponible sur UA-cam.
      Par contre, si vous le souhaitez, vous pouvez recevoir des nouvelles par email en cliquant sur le lien en description sous la vidéo.
      Bon code !
      Simon.

  • @yvanmackowiak1227
    @yvanmackowiak1227 2 роки тому

    c'est peut êtres moi qui me rate quelques part mais exo 5 qui sert a s'avoir si c'est pair ou impaire si j'ai bien compris renvoi toujours true

    • @codeursenior
      @codeursenior  2 роки тому

      Bonjour Yvan, est-ce que vous avez le temps mm:ss où vous pensez qu'il y a une erreur ? Normalement l'opérateur modulo "%" de JavaScript nous permet bien de déterminer si un nombre est pair ou impair.

  • @alexylepretre9296
    @alexylepretre9296 Рік тому

    La méthode some() teste si au moins un élément du tableau passe le test implémenté par la fonction fournie. Elle renvoie un booléen indiquant le résultat du test.

    • @codeursenior
      @codeursenior  Рік тому

      Hello, tout à fait. Every et Some sont des raccourcis de syntaxe de reduce() bien pratiques.

  • @yvonp.3233
    @yvonp.3233 Рік тому

    pour l'exo 5 il me semble qu'il y a une erreur avec reduce : "mensalary" est un élément du tableau, un "user", il faudrait plutôt écrire "user.salary" à mon avis.

    • @therealericlessard
      @therealericlessard Рік тому

      le fait est que la partie "map" de la fonction transforme le tableau de users en tableau de chiffres seulement. mensalary est donc simplement la description d'un des éléments.
      Si tu fais simplement console.log(userList.map(u=> u.salary)) tu va te retrouver avec juste des chiffres comme liste ( [35000, 42000,32000, 38000]

  • @liolio4386
    @liolio4386 Рік тому

    j ai pu faire le dernier exercice avec 2 boucle FOR :
    const genre = []
    for(let i=0;i

  • @apprendrejavascriptrapidem9512
    @apprendrejavascriptrapidem9512 2 роки тому +1

    super géniale

  • @gobajoseph5064
    @gobajoseph5064 2 роки тому

    Dans lexo 2 le 2e exemple concernant min vs avez mis max près de reduce c'est pas plutôt min qu'il faut mettre puisque c'est la valeur minum qu'on veut obtenir ici

    • @codeursenior
      @codeursenior  2 роки тому +2

      Salut, oui min dans le reduce pour obtenir la valeur minimum et max pour la valeur maximum. La valeur dans le paramètre devrait être renommée pour éviter la confusion. 👍
      15:21

  • @georgelawson-betum9489
    @georgelawson-betum9489 2 роки тому

    Trop top

  • @bonbon738
    @bonbon738 Рік тому

    Il ya les méthodes some() et Every qui peuvent aider aussi

    • @codeursenior
      @codeursenior  Рік тому

      Tout à fait, on peut les voir comme des "raccourcis" de reduce (tableau -> valeur)

  • @sarazar928ghost9
    @sarazar928ghost9 Рік тому

    Pour l'exo 3 j'avais simplement fait Math.max(...someArr) et Math.min(...someArr)

    • @sarazar928ghost9
      @sarazar928ghost9 Рік тому

      Et pour l'exo 5 : const isOddValueArr = someArr.findIndex(a=>a%2!=0) != -1;

  • @alexg7282
    @alexg7282 2 роки тому

    Merci

  • @arnaudboubli7295
    @arnaudboubli7295 11 місяців тому

    ouais top merci

    • @codeursenior
      @codeursenior  11 місяців тому

      Bon code avec map, filter et reduce. 🚀

  • @ssikarim
    @ssikarim 10 місяців тому

    Quand on te dit frérot , oas la peine de faire cette relarque du début. Ton public est francophone et non francais seulement.
    Merci pour le tuto

    • @codeursenior
      @codeursenior  10 місяців тому +1

      Merci pour votre remarque, ça a changé ma vie. Bon code !

  • @lespacedunmatin
    @lespacedunmatin Рік тому

    Ça aurait été parfait avec la mention des méthodes `.every` et `.some`.

  • @gobajoseph5064
    @gobajoseph5064 2 роки тому +1

    Ce genre de petit hack on en redemande encore et encore avec ça déjà on passe le cap des tableaux ds l'apprentissage du js.

    • @codeursenior
      @codeursenior  2 роки тому

      C'est bien noté @Goba Joseph !

    • @gobajoseph5064
      @gobajoseph5064 2 роки тому

      @@codeursenior jai pris ta formation node js peut ton lentamer sans connaître un framework front ou apprendre un framework frobt avant de se lancer sur du node

    • @codeursenior
      @codeursenior  2 роки тому +1

      Holà, non NodeJS ne nécessite pas de connaître un framework frontend. Après dans le cas où tu développes une API Rest, ça te permet d'avoir une culture général pour comprendre pourquoi on expose des JSON à certaines URL. Mais ça reste du bonus. Au boulot, pas d'excuses ! 😉

    • @gobajoseph5064
      @gobajoseph5064 2 роки тому

      @@codeursenior merci je m'y met 😂 . En tt cas merci

    • @codeursenior
      @codeursenior  2 роки тому

      @@gobajoseph5064 Bon apprentissage !

  • @HushCode
    @HushCode 8 місяців тому

    Il y a une erreur pour l'exo 3, tu utilises la variable max au lieu de min pour la récupération du min... 😅 Ça fonctionne mais pas très logique au niveau des noms quoi...

    • @codeursenior
      @codeursenior  7 місяців тому

      Haha effectivement, il y a aurait moyen de faire mieux !
      Pour une prochaine vidéo !

  • @Matthi0uw
    @Matthi0uw 2 роки тому

    C'est quand même vachement sexiste d'augmenter que les hommes ! :D
    T'as changé Simon ;)

    • @codeursenior
      @codeursenior  2 роки тому

      Haha, mais c'est quoi cette boîte où les mecs sont moins bien payés aussi ! 😅
      Tu vas bien, t'est toujours sur Gre ou pas ?
      À +

    • @Matthi0uw
      @Matthi0uw 2 роки тому

      Yes ! J'ai pas trop bougé en fait depuis la fac

    • @codeursenior
      @codeursenior  2 роки тому

      @@Matthi0uw Ok ! Je suis sur Grenoble aussi, on pourra se boire un verre tantôt si tu as de la dispo. 🍺

  • @benjaminschreiner496
    @benjaminschreiner496 Рік тому

    Salut, dans un premier temps merci pour les explications, mais comme j'ai pas fait tous ça dans mon IDE... shame on me ! j'ai une petite question.
    Pour l'exercice des salaires suite à tes explications dans ma tete ça ressembler plus à " userList.filter(e => e.gender=='M').map(e=>e.salary+1000).reduce((e1,e2)=> e1.salary + e2.salary)" mais la correction dit " userList.filter(e => e.gender='M').map(e=>e.salary+=1000).reduce((e1,e2)=> e1 + e2)".
    Mais en faisant comme dans la correction on va avoir en retour un objet qui ressemble à ça non ? "{name: "JohnJoe", gender: 'MM', salary:69000}"
    Désolé j'ai vu la vidéo sur le téléphone, j'essairai tous ça, en tous cas cela va bien m'aider pour la suite. Merci !

  • @aroard12
    @aroard12 Рік тому

    Ici la question des performances n’est pas du tout prise en compte. Entre accéder à un élément du tableau par son index ou effectuer une fonction sur chaque élément du tableau cela change grandement la rapidité d’exécution …