<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Christopher N. KATOYI</title>
    <description>The latest articles on DEV Community by Christopher N. KATOYI (@christopher2k).</description>
    <link>https://dev.to/christopher2k</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F145657%2Fb05739f4-3361-452e-96ae-2615954fc681.jpeg</url>
      <title>DEV Community: Christopher N. KATOYI</title>
      <link>https://dev.to/christopher2k</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/christopher2k"/>
    <language>en</language>
    <item>
      <title>Introduction à Flexbox</title>
      <dc:creator>Christopher N. KATOYI</dc:creator>
      <pubDate>Wed, 19 Aug 2020 16:34:06 +0000</pubDate>
      <link>https://dev.to/christopher2k/introduction-a-flexbox-2n50</link>
      <guid>https://dev.to/christopher2k/introduction-a-flexbox-2n50</guid>
      <description>&lt;h3&gt;
  
  
  Pré-requis
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;HTML et CSS de base&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Niveau
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Débutant&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Pour gérer la mise en page des différents éléments de ton site, plusieurs choix s'offrent à toi. Tu peux partir sur un système de colonnes et d'éléments de gabarits (template) tout faits comme tu peux en trouver dans Bootstrap ou autre librairie CSS; tu peux choisir une solution "maison" que tu aies basé toi-même sur des technologies CSS existantes comme les CSS Grids ou alors, faire preuve de créativité et utiliser des choses que j'ignore !&lt;/p&gt;

&lt;p&gt;Des gens ont bossé dur sur ces thématiques et toutes les solutions, à mon sens, se valent dans la mesure où le résultat final sera le même. Les critères qui doivent aiguiller ton choix sont les suivants:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;la maintenabilité - il faut que tu puisses revenir dans 2 mois, te relire et modifier des choses&lt;/li&gt;
&lt;li&gt;l'adaptation responsive - il ne faut pas que ce soit une prise de tête&lt;/li&gt;
&lt;li&gt;le temps dont tu disposes - plus tu as de temps, plus tu as le droit de réfléchir à une solution sur-mesure&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Si le contexte me le permet, je suis un gros gros utilisateur de flexbox, un système de positionnement disponible en CSS. C'est l'outil de mise en page, selon moi, par excellence. Je n'ai pas encore croisé de layout (mise en page) que je n'ai pas pu réaliser avec flexbox. Dans cet article je vais t'expliquer comment fonctionne ce système de positionnement et comment être efficace rapidement avec.&lt;/p&gt;

&lt;h1&gt;
  
  
  Première étape, étudier le positionnement
&lt;/h1&gt;

&lt;p&gt;Flexbox, qui te permet de positionner tes éléments à ta guise, est un outil puissant qui fonctionne en te forçant à réfléchir à la relation entre un élément conteneur et ses éléments enfants. Je m’explique, prends ce schéma:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fyxi1o99ia2560qwhk9io.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fyxi1o99ia2560qwhk9io.png" alt="A- Conteneur et contenu"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A- Conteneur et contenu&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Dans ce schéma, j’ai un conteneur, le gros rectangle gris, qui possède 3 éléments enfants (à l’intérieur): le rose, l'orange et enfin le violet. Si je décris la manière dont les éléments sont positionnés dans le conteneur, j’aurais cette analyse:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Les éléments sont positionnés en ligne dans le conteneur.&lt;/li&gt;
&lt;li&gt;De gauche à droite (dans l’axe horizontal) éléments sont positionnés au centre du conteneur et occupent le même espace&lt;/li&gt;
&lt;li&gt;De haut en bas (dans l’axe vertical), les éléments sont positionnés au centre du conteneur&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ces trois éléments sont les informations de bases essentielles à la mise en place d’un système de positionnement à l’aide de flexbox.&lt;/p&gt;

&lt;h1&gt;
  
  
  Seconde étape, coder la structure de la mise en page
&lt;/h1&gt;

&lt;p&gt;Selon la première image, tu peux déjà dans ta tête imaginer le code HTML qui te permet de représenter ces éléments. On a un élément, contenant trois autres éléments donc :&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fn1x3vh9wo9mtrfg7qgsm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fn1x3vh9wo9mtrfg7qgsm.png" alt="B- Structure HTML"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;B- Structure HTML&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Pour accompagner ce HTML, j’ai ce code CSS qui ne fait que donner une taille et une couleur à mes éléments afin de les faire matcher avec le screenshot initial:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fi60coegaq22jgbwsoj6t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fi60coegaq22jgbwsoj6t.png" alt="C - Code CSS"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;C - Code CSS&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ok on est bon. Si on check rapidement le rendu actuel on obtient:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzpkogy2lwheaahn5posh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fzpkogy2lwheaahn5posh.png" alt="D - Rendu HTML + CSS"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;D - Rendu HTML + CSS&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Bon, ce n'est pas vraiment ce qu’on veut, mais de base voilà ce qu’il se passe ! On va appliquer ce que l’on a vu dans l’analyse de la première partie afin d’obtenir un résultat satisfaisant grâce à flexbox.&lt;/p&gt;

&lt;h1&gt;
  
  
  Troisième étape: coder le CSS du conteneur
&lt;/h1&gt;

&lt;p&gt;Bon, j’ai mon code CSS de base ainsi que le code HTML l’accompagnant, mais toujours pas de flexbox en vue. Pour l’appliquer, on va se concentrer sur le conteneur. La première chose à faire, c’est dire à CSS que le conteneur gris utilise flexbox pour positionner les éléments à l’intérieur. Rien de plus simple ici :&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fknjcg6curdk9umwfxsvg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fknjcg6curdk9umwfxsvg.png" alt="E - Display flex"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;E - Display flex&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code&gt;display: flex&lt;/code&gt; est la ligne CSS qui permet de mettre l’affichage du conteneur en mode flex. À partir de ce moment, les autres propriétés flex peuvent s’appliquer. À ce moment-là, selon le navigateur utilisé, le layout de la page devrait déjà avoir changé. Sur iPad Pro (Safari), j’ai ce résultat-là:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnwj9t96wa81xnhx4nj94.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fnwj9t96wa81xnhx4nj94.png" alt="F - Application de la propriété flexbox"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;F - Application de la propriété flexbox&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Les éléments enfants du conteneur sont désormais non plus en colonne, mais en ligne ! Le premier point (“Les éléments sont positionnés en ligne dans le conteneur.”) semble assuré. En réalité, pas vraiment. Selon les navigateurs, des valeurs par défaut s’appliquent sur les propriétés et donc d’un navigateur à un autre, le comportement de base de &lt;code&gt;display: flex&lt;/code&gt; peut être totalement différent ! La propriété CSS à utiliser explicitement pour être SUR ET CERTAIN que les éléments du conteneur soient affichés en ligne est &lt;code&gt;flex-direction&lt;/code&gt; :&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fock626ce230q74rotpvk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fock626ce230q74rotpvk.png" alt="G - Direction explicite"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;G - Direction explicite&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code&gt;flex-direction&lt;/code&gt; est une propriété qui indique dans quelle direction se positionnent les éléments dans le conteneur. C’est hyper simple, soit les éléments sont positionnés en ligne (à l’horizontale) et donc la valeur de cette propriété est &lt;code&gt;row&lt;/code&gt;, soit les éléments sont positionnés en colonne (à la verticale) et donc la valeur de cette propriété est &lt;code&gt;column&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Le résultat graphique de cette propriété est maintenant sur tous les navigateurs comme sur l’image F.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;flex-direction&lt;/code&gt; défini ce que je vais appeler dans la suite de l’article un &lt;strong&gt;axe principal&lt;/strong&gt;. Cette notion est très importante pour la suite, car les propriétés que nous allons voir plus bas ont un comportement qui évolue selon l’axe principal. Dans mon exemple, l’axe principal est l’axe horizontal.&lt;/p&gt;

&lt;p&gt;Bon, j’ai jusqu’ici quelque chose qui se rapproche du résultat attendu. Pour correspondre au deuxième critère, j’ai besoin d’espacer mes items entre eux et de centrer tout le groupe d’items dans le conteneur. En d’autres termes, je veux espacer équitablement mes items dans l’axe principal du conteneur ! Pour y parvenir, rien de plus simple: la propriété &lt;code&gt;justify-content&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Elle permet de définir le positionnement des items dans l’axe horizontal en x valeurs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;flex-start&lt;/code&gt; → positionnement en début d’axe principal,&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;flex-end&lt;/code&gt; → positionnement en fin d’axe principal,&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;center&lt;/code&gt; → positionnement au centre de l’axe principal,&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;space-between&lt;/code&gt; → ou le premier item se trouve en début d’axe principal, le dernier item en fin d’axe et ou l’espace restant est distribué entre les autres items,&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;space-around&lt;/code&gt; → positionnement où tout l’espace de l’axe est distribué équitablement entre les items.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pour mon cas d’utilisation ici, la valeur la plus utile est &lt;code&gt;space-around&lt;/code&gt;, qui donne ce résultat là:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F992j9nhq4zxe3fjvo5td.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F992j9nhq4zxe3fjvo5td.png" alt="H - Axe principal"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;H - Axe principal&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;C’est beaucoup mieux ! L’espace est distribué automatiquement et équitablement entre tous les items sans que le premier et le dernier item touchent les bords de mon conteneur.&lt;/p&gt;

&lt;p&gt;La dernière chose à régler concerne l’axe secondaire, et dans mon exemple, l’axe vertical. Les éléments doivent être centrés sur cet axe d’après la troisième phrase de l’analyse. La propriété qui a le contrôle sur l'axe secondaire donc, se comporte comme &lt;code&gt;justify-content&lt;/code&gt;, mais s’appelle &lt;code&gt;align-items&lt;/code&gt; ! Cette propriété contrôle le positionnement des items dans le conteneur pour l’axe secondaire et utilise exactement les mêmes valeurs, donc sans surprises ici, on utilisera la valeur &lt;code&gt;center&lt;/code&gt;:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6kj3smep1r3psqajpzdr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F6kj3smep1r3psqajpzdr.png" alt="I - Placement parfait"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I - Placement parfait&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;...ce qui donne le résultat:&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fw854gescbqnlb4iyfxni.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Fw854gescbqnlb4iyfxni.png" alt="J - Layout terminé"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;J - Layout terminé&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Voilà !&lt;/p&gt;

&lt;p&gt;Il est intéréssant, pour capter toutes les subtilités du positionnement flexbox, de le tester dans un environnement sandbox et de voir ses possibilités. D’autres propriétés pour le conteneur ou les items existent et permettent d’aller encore plus loins dans les possibilités de positionnement et de taille... Je complèterais surement cet article avec une cheat-sheet qui récapitule toutes les propriétés et combinaisons possibles mais pour le moment je te laisse cette introduction !&lt;/p&gt;

&lt;p&gt;Merci pour la lecture !&lt;/p&gt;

&lt;p&gt;Code disponible sur: &lt;a href="https://stackblitz.com/edit/article-flexbox?file=style.css" rel="noopener noreferrer"&gt;https://stackblitz.com/edit/article-flexbox?file=style.css&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Credit photo de couverture : &lt;a href="https://unsplash.com/@omarg247?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Omar Flores&lt;/a&gt; sur &lt;a href="https://unsplash.com/?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>css</category>
      <category>html</category>
      <category>french</category>
      <category>francais</category>
    </item>
    <item>
      <title>Manipulation de tableaux avec JS</title>
      <dc:creator>Christopher N. KATOYI</dc:creator>
      <pubDate>Wed, 15 Jul 2020 22:29:44 +0000</pubDate>
      <link>https://dev.to/christopher2k/manipulation-de-tableaux-avec-js-2na7</link>
      <guid>https://dev.to/christopher2k/manipulation-de-tableaux-avec-js-2na7</guid>
      <description>&lt;h3&gt;
  
  
  Pré-requis
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Des connaissances de base en Javascript&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Niveau
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Intermédiaire&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Les tableaux (aucun rapport avec Excel) sont des structures de données très utilisés en programmation. Ils permettent tout simplement la possibilité d'assigner à une seule et même variable, plusieurs données selon certaines règles qui diffèrent selon le langage que l'on utilise. Selon ce que l'on code, un site, une application, un CLI (acronyme pour Command Line Tool, un outil en ligne de commande, pour un usage dans un terminal), les données dans un tableau seront tôt ou tard nécessaires dans un traitement. Dans cet article, je vais parler des cas d'utilisation potentielle de ces données et comment gérer ces situations en Javascript.&lt;/p&gt;

&lt;h1&gt;
  
  
  Insérer des éléments dans un tableau
&lt;/h1&gt;

&lt;p&gt;Un tableau est assez simple à déclarer.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--43Jrnk7f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/7a1vf1cc3d2m2soqsl8l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--43Jrnk7f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/7a1vf1cc3d2m2soqsl8l.png" alt="Déclaration d'un tableau"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;1- Déclaration d'un tableau&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;La notation &lt;code&gt;[]&lt;/code&gt; permet de déclarer un tableau vide et de l'assigner à la variable voulue. L'insertion des éléments dans un tableau se fait via la méthode &lt;code&gt;.push(element)&lt;/code&gt; où le paramètre &lt;code&gt;element&lt;/code&gt; représente ce que l'on insère dans un tableau. &lt;code&gt;push&lt;/code&gt; ajoute les éléments à la fin du tableau:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZGtbZKTo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/dk3zbcbhpdm0ffjvxfrr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZGtbZKTo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/dk3zbcbhpdm0ffjvxfrr.png" alt="Insertion d'éléments dans un tableau"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;2- Insertion d'éléments dans un tableau&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;La méthode &lt;code&gt;push&lt;/code&gt; peut prendre plusieurs arguments qui iront dans le tableau dans l'ordre dans lequel ils sont entrés ! Il n'y a pas de restriction quant au type de données que l'on insère. Par exemple, j'y met ici des strings et un number.&lt;/p&gt;

&lt;p&gt;Il existe un autre moyen plus concis d'écrire ce que je viens de faire plus haut à savoir déclarer et insérer des éléments dans un tableau:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RR9hl8T3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/01jr4d84hl0jv5fk6v5u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RR9hl8T3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/01jr4d84hl0jv5fk6v5u.png" alt="Déclaration + insertion"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;3- Déclaration + insertion&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;La notation &lt;code&gt;[]&lt;/code&gt; autorise en effet l'écriture d'éléments entre les deux crochets ce qui permet de déclarer et d'insérer dans la même instruction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bonus
&lt;/h2&gt;

&lt;p&gt;La longueur d'un tableau est le nombre d'éléments qu'il contient. Ainsi, le tableau de l'exemple 3 a une longueur égale à 2, le tableau de l'exemple 2 a une longueur de 8. Un tableau vide a donc une longueur de 0. Il est cependant possible de déclarer un tableau ayant une longueur supérieure à 0, mais ne comportant "aucun" élément.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Mlei1kCB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/n17y8z8g02ez65rhx03t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Mlei1kCB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/n17y8z8g02ez65rhx03t.png" alt="À ne pas reproduire !"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;4- À ne pas reproduire !&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;L'idée est là, mais non plus sérieusement:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--l2Md6Xsu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2ogz62dxvkj3z52oz1cp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--l2Md6Xsu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/2ogz62dxvkj3z52oz1cp.png" alt="Déclaration d'un tableau vide de longueur n"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;5- Déclaration d'un tableau vide de longueur n&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Le tableau déclaré ainsi sera rempli avec 2 valeurs &lt;code&gt;undefined&lt;/code&gt; (mon exemple 4 n'était pas si naze au final). Il est rempli avec deux éléments qui symbolisent l'absence de valeur, il n'est donc pas considéré comme vide...&lt;/p&gt;

&lt;h1&gt;
  
  
  Parcourir un tableau
&lt;/h1&gt;

&lt;p&gt;Dans cette partie, je vais poser un contexte. J'ai un tableau qui contient 10 éléments, des chaînes de caractères. J'aimerais appeler une fonction plusieurs fois, en passant à chaque appel un élément du tableau et ainsi, appeler la fonction avec tous les éléments ! En gros, j'aimerais appeler 10 fois une fonction qui prendra à chaque fois un argument: un élément du tableau !&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CXZGNISy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/vw0ficie8f3ebhdehugj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CXZGNISy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/vw0ficie8f3ebhdehugj.png" alt="La fonction à appeler"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;6- La fonction à appeler&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Parcourir un tableau, c'est accéder aux éléments qu'il contient. On a pour ça l'écriture que vous connaissez déjà sûrement déjà, &lt;code&gt;myArray[x]&lt;/code&gt; x étant l'indice de l'élément auquel on veut accéder. L'indice est compris entre 0 et la longueur du tableau moins 1; pour un tableau de 10 éléments, les indices disponibles vont donc de 0 à 9. Je pense que vous l'aurez compris, écrire à la main tous les &lt;code&gt;myArray[0]&lt;/code&gt;, &lt;code&gt;myArray[1]&lt;/code&gt;... c'est long et pénible...&lt;/p&gt;

&lt;p&gt;Sachant cela, l'approche la plus naïve est la suivante:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--42dCMb2m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/r80sm9h844nmfago4d4r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--42dCMb2m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/r80sm9h844nmfago4d4r.png" alt="Accès avec une boucle for"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;7- Accès avec une boucle &lt;code&gt;for&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sur cet exemple, j'ai utilisé une boucle &lt;code&gt;for&lt;/code&gt; qui permet d'itérer tant de fois que les conditions écrite sur la première ligne sont respectée. Ici, on indique que l'on démarre le compte à 0, qu'on rentre dans la boucle tant que le compte est strictement inférieur à la longueur du tableau et qu'à chaque fin de boucle, on augmente le compte de 1. C'est la méthode la plus connue et que tout développeur a au moins utilisé une fois !&lt;/p&gt;

&lt;p&gt;L'usage de la solution avec la boucle &lt;code&gt;for&lt;/code&gt; a tellement été utilisée que Javascript (pas le langage, mais la team qui travaille sur la spécification du langage) a mis à disposition une syntaxe spécialement faite pour les objets &lt;a href="https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Les_protocoles_iteration"&gt;itérables&lt;/a&gt;, et comme les tableaux sont des objets itérables, nous pouvons utiliser cette nouvelle syntaxe introduite.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1pI9IQWg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/iqnwo9zq3cguenyihmn2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1pI9IQWg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/iqnwo9zq3cguenyihmn2.png" alt="Accès avec une boucle for..of"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;8- Accès avec une boucle &lt;code&gt;for..of&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;La boucle &lt;code&gt;for..of&lt;/code&gt; va permettre de mettre chaque élément du tableau dans une variable que j'ai appelé ici &lt;code&gt;element&lt;/code&gt;. Il n'est pas question d'utiliser directement &lt;code&gt;myArray&lt;/code&gt; ici pour accéder à l'élément courant du tableau mais juste la variable que l'on spécifie dans le for..of. Je préfère cette technique à la précédente pour les raisons suivantes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pas besoin de réfléchir aux conditions d'itération, la boucle s'arrête d'elle-même, cette technique est donc plus sécurisée.&lt;/li&gt;
&lt;li&gt;La syntaxe est plus concise, on ne fait pas intervenir de compteur.&lt;/li&gt;
&lt;li&gt;Elle permet de montrer aux potentiels recruteurs que vous utilisez les mécaniques récentes du langage, c'est toujours un plus!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Bon, admettons qu'en plus de l'élément du tableau, on a aussi besoin de son index. Le code de l'exemple 8 ne permet pas d'avoir l'index, il n'est donc pas valable pour cette problématique. La solution, c'est le &lt;code&gt;forEach&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--V503PR1W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/20izfxj2x8gpom6mwmzq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--V503PR1W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/20izfxj2x8gpom6mwmzq.png" alt="Accès aux éléments avec la méthode forEach"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;9- Accès aux éléments avec la méthode &lt;code&gt;.forEach&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Ici, on utilise une méthode propre à l'objet &lt;code&gt;Array&lt;/code&gt;. Elle permet l'itération sur tous les éléments du tableau et attend en argument une fonction prenant 1 à 3 arguments. Ces arguments sont dans l'ordre:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;L'élément courant&lt;/li&gt;
&lt;li&gt;L'index de l'élément courant&lt;/li&gt;
&lt;li&gt;Le tableau auquel l'élément appartient (donc bon dans 100% des cas le tableau de base quoi)&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Bonus
&lt;/h2&gt;

&lt;p&gt;Il existe un moyen, fancy, luxueux, big brain d'accéder à des éléments d'un tableau quand on a une idée de ce qu'il contient à peu prêt. Admettons une fonction qui nous retourne un tableau de deux éléments. S'il se trouve, bizarrement, que ces deux éléments sont un nom et un prénom que l'on va utiliser plus tard dans le code, on peut se permettre de faire ça:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--14YwaWdx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/zqfz2j6lop1vx9myj708.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--14YwaWdx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/zqfz2j6lop1vx9myj708.png" alt="Destructuration"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;10- Déstructuration&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Cette technique s'appelle la déstructuration. Elle permet d'assigner des éléments d'un tableau à une variable nommée ! Beaucoup plus sympathique d'écrire &lt;code&gt;firstName&lt;/code&gt; dans le code plutôt que de faire référence à &lt;code&gt;myArray[1]&lt;/code&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Fusionner des tableaux
&lt;/h1&gt;

&lt;p&gt;Il arrive parfois que l'on ai à fusionner un ou plusieurs tableaux en un seul, afin de pouvoir traiter leur contenu dans un seul et même traitement. Pour cela, rien de bien compliqué ici:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--unRKt1IR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/c50lcx3c50ehzrc9pp07.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--unRKt1IR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/c50lcx3c50ehzrc9pp07.png" alt="Fusion de deux tableaux avec la méthode concat"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;11- Fusion de deux tableaux avec la méthode &lt;code&gt;.concat&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;La méthode &lt;code&gt;.concat()&lt;/code&gt; peut prendre en argument un ou plusieurs tableaux ce qui permet de les fusionner dans la même instruction. Cette méthode renvoie un tout nouveau tableau: il ne modifie pas le tableau que l'on utilise pour appeler la méthode: on dit alors que &lt;code&gt;concat&lt;/code&gt; ne mute pas (du verbe muter), le tableau initial !&lt;/p&gt;

&lt;p&gt;Il existe une nouvelle façon récemment introduite pour créer un tableau à partir des éléments d'un ou plusieurs tableaux:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FORqGudP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/w3h2jjenyp6nhf5bqact.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FORqGudP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/w3h2jjenyp6nhf5bqact.png" alt="Concaténation avec le spread operator"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;12- Concaténation avec le spread operator&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;J'ai utilisé une syntaxe particulière ici: les &lt;code&gt;...&lt;/code&gt;. Il s'agit du spread operator, syntaxe de décomposition en français. Il s'utilise sur les tableaux (mais pas que!) et permet de faire référence à chaque élément du tableau séparément. Ainsi, ces deux écritures sont équivalentes:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--i6oOJnOD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/j13tyuwm7bxgyut2dht2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i6oOJnOD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/j13tyuwm7bxgyut2dht2.png" alt="Écritures équivalentes"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;13- Écritures équivalentes&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Pour plus d'informations sur le spread operator: &lt;a href="https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Op%C3%A9rateurs/Syntaxe_d%C3%A9composition"&gt;cliquez ici&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Rechercher un élément
&lt;/h1&gt;

&lt;p&gt;Un des cas d'utilisation le plus répandu concernant les tableaux est la recherche d'un élément spécifique à l'intérieur.&lt;/p&gt;

&lt;p&gt;Prenons par exemple un tableau qui garde plusieurs objets représentant des personnes:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--daqQogrW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ydkkcb0pdu67r8wor6jn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--daqQogrW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ydkkcb0pdu67r8wor6jn.png" alt="Tableau de personnes"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;14- Tableau de personnes&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Admettons le scénario suivant: on aimerait récupérer le profil de l'utilisateur "Christopher".&lt;/p&gt;

&lt;p&gt;La première approche est la suivante:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UfODKnfR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/lzdt8i5e7lgy1ff05a06.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UfODKnfR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/lzdt8i5e7lgy1ff05a06.png" alt="Recherche à l'aide d'une structure for..of"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;15- Recherche à l'aide d'une structure &lt;code&gt;for..of&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;On utilise la boucle de parcours &lt;code&gt;for..of&lt;/code&gt; afin de vérifier le prénom de chaque profil et lorsque l'on tombe sur celui recherché, on l'affecte à une variable plus haut. &lt;/p&gt;

&lt;p&gt;Javascript, encore une fois, nous donne la possibilité d'effectuer cette opération avec une syntaxe encore plus concise !&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bwuHDsQs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/n7ny9nwc1conuwerxua2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bwuHDsQs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/n7ny9nwc1conuwerxua2.png" alt="Recherche avec .find"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;16- Recherche avec &lt;code&gt;.find&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code&gt;.find()&lt;/code&gt; est une méthode offerte par l'objet Array (comme &lt;code&gt;.concat()&lt;/code&gt; ou &lt;code&gt;.forEach()&lt;/code&gt;) qui prend en argument une fonction, le prédicat, qui va s'appliquer sur tous les éléments du tableau. Le prédicat doit retourner une valeur booléenne (&lt;code&gt;true&lt;/code&gt; ou alors &lt;code&gt;false&lt;/code&gt;) qui indique si l'élément que l'on recherche dans le tableau est le bon ! Lorsque le prédicat retourne donc &lt;code&gt;true&lt;/code&gt; l'élément du tableau passé au prédicat est celui qui est retourné dans la variable &lt;code&gt;christopherProfile&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Dans les deux exemples ici, si l'élément recherché n'existait pas dans le tableau, la valeur de la variable &lt;code&gt;christopherProfile&lt;/code&gt; serait &lt;code&gt;undefined&lt;/code&gt;.&lt;/p&gt;

&lt;h1&gt;
  
  
  Vérifier ce que contient le tableau
&lt;/h1&gt;

&lt;p&gt;Il est évidemment d'usage courant d'aller vérifier ce que contient un tableau. Ici, on a deux manières de la faire. Ces deux méthodes vont renvoyer un booléen qui indiquera si l'élément recherché est bel et bien dans le tableau.&lt;/p&gt;

&lt;p&gt;La première méthode est celle-ci:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7_4n8itd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/d6jg6wj6le3tk8fsktmk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7_4n8itd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/d6jg6wj6le3tk8fsktmk.png" alt="Vérification de contenance avec .includes"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;17- Vérification de contenance avec &lt;code&gt;.includes&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code&gt;.includes()&lt;/code&gt; prend en argument l'exact élément recherché. C'est une méthode utile si l'on connaît l'élément exact (et j'insiste sur le exact), que l'on recherche. La seconde méthode est plus permissive dans la mesure où il est possible de rechercher si un élément dans le tableau correspond à un prédicat.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RCeEr8SB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/hf0b7tmekispqjq6o0hb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RCeEr8SB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/hf0b7tmekispqjq6o0hb.png" alt="Vérification de contenance avec .some"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;18- Vérification de contenance avec &lt;code&gt;.some&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code&gt;.some()&lt;/code&gt; prend en argument une fonction qui sert de prédicat, qui prendra elle-même en argument les éléments du tableau un à un et qui renverra une valeur booléenne. Si aucun élément du tableau passé à la fonction n'a retourné &lt;code&gt;true&lt;/code&gt;, alors &lt;code&gt;.some()&lt;/code&gt; retournera &lt;code&gt;false&lt;/code&gt; mais si au moins un élément du tableau matche, &lt;code&gt;.some()&lt;/code&gt; retournera &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Le fait que &lt;code&gt;.some()&lt;/code&gt; prenne en argument un prédicat, en fait une méthode beaucoup plus puissante que &lt;code&gt;.includes()&lt;/code&gt; qui ne test au final qu'une égalité STRICTE entre l'élément passé en argument et les éléments du tableau. De ce fait, &lt;code&gt;.includes()&lt;/code&gt; est a utiliser avec parcimonie, car des erreurs sont vite arrivées:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gIkvxBD8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/euzjyk3xhhvrm3ndzmb1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gIkvxBD8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/euzjyk3xhhvrm3ndzmb1.png" alt="Des objets identiques mais en réalité différents !"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;19- Des objets identiques mais en réalité différents !&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Dans cet exemple, l'objet dans la variable &lt;code&gt;myValue&lt;/code&gt; n'est pas strictement égal  à &lt;code&gt;{name: 'chris'}&lt;/code&gt; (ils ont la même valeur, mais il ne s'agit pas du même objet en mémoire) et donc &lt;code&gt;.includes()&lt;/code&gt; retourne &lt;code&gt;false&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Conclusion: utilisez &lt;code&gt;.some()&lt;/code&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  Filtrer les éléments du tableau
&lt;/h1&gt;

&lt;p&gt;Quand on ne connaît pas exactement les éléments d'un tableau et qu'on aimerait en récupérer une partie qui correspondent à un critère particulier, on fait appel au filtrage !&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XWDs73ne--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/hp7lgtukneljw0ya3tsc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XWDs73ne--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/hp7lgtukneljw0ya3tsc.png" alt="Première approche de filtrage"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;20- Première approche de filtrage&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Dans cet exemple, j'ai un tableau de noms et j'aimerais récupérer uniquement les noms qui commencent par la lettre c. Pour parvenir à ce résultat-là, je parcours mon tableau et je teste si l'élément courant commence par la lettre c. Si c'est le cas, je mets l'élément dans un nouveau tableau ainsi de suite...&lt;/p&gt;

&lt;p&gt;Bon, il existe encore une fois un moyen plus classe de faire cette opération.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CxF0LPjv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/8soa871q4999cvabse8g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CxF0LPjv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/8soa871q4999cvabse8g.png" alt="Filtrage avec  raw `.filter` endraw "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;21- Filtrage avec &lt;code&gt;.filter&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code&gt;.filter()&lt;/code&gt; prend en argument un prédicat qui va tester tous les éléments du tableau et mettre dans un nouveau tableau les éléments qui match avec le prédicat, tout simplement. Le traitement se fait en une seule ligne.&lt;/p&gt;

&lt;h1&gt;
  
  
  Transformer des éléments du tableau
&lt;/h1&gt;

&lt;p&gt;Les opérations les plus complexes, mais rien de sorcier, sont dans cette section. Il peut parfois arriver que l'on ai besoin de transformer le tableau... en quelque chose d'autre. Ici, on a deux cas:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;On veut modifier les éléments d'un tableau. C'est le plus simple, on entre avec un tableau de n éléments, on finit avec un tableau de n éléments, la seule différence est ce quelque chose a changé avec ces éléments !&lt;/li&gt;
&lt;li&gt;On veut prendre le tableau et en ressortir quelque chose de totalement différent, un tout autre type de donnée. Ici c'est le freestyle complet, TOUT est possible !&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Pour le premier cas, on a la méthode &lt;code&gt;.map()&lt;/code&gt; qui prend en argument une fonction que je vais appeler le &lt;strong&gt;transformateur&lt;/strong&gt;. Cette fonction va prendre en argument l'élément courant du tableau et va retourner un nouvel élément, modifié, qui prendra la place de l'élément courant. Prenons la liste des prénoms précédente: pour les afficher dans mon site, j'aimerais les passer en majuscule pour une raison obscure:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TO1f16MZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ctpbnd6mnx6fay65s2ec.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TO1f16MZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ctpbnd6mnx6fay65s2ec.png" alt="Transformation avec map"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;22- Transformation avec &lt;code&gt;.map&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Le fonctionnement est plutôt simple et les possibilités sont énormes !&lt;/p&gt;

&lt;p&gt;Bon pour le second cas, admettons que je doive former une phrase avec tout ces prénoms comme par exemple "Je sors aujourd'hui avec chris, christine, christian, noah". On va utiliser un outil un peu overkill, mais pour l'exemple !&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vgymBlaC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/q0zsn8jgij6yn3jz18ln.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vgymBlaC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/q0zsn8jgij6yn3jz18ln.png" alt="Transformation avec  raw `.reduce` endraw "&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;23- Transformation avec &lt;code&gt;.reduce&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;On utilise ici &lt;code&gt;.reduce()&lt;/code&gt; qui est une méthode des tableaux bien particulière. Elle permet de transformer un tableau en une toute autre valeur en utilisant un accumulateur. &lt;/p&gt;

&lt;p&gt;Elle prend deux arguments.&lt;/p&gt;

&lt;p&gt;Le premier est une fonction de callback qui va s'exécuter sur tous les éléments du tableau un à un, en prenant 3 arguments (2 obligatoires et un optionnel) et en retournant toujours l'accumulateur. Le premier est ce fameux accumulateur. C'est une valeur persistante entre les différentes exécutions de la fonction qui va représenter ce que l'on va retourner à l'issue de la méthode &lt;code&gt;.reduce()&lt;/code&gt;. Le second paramètre est l'item courant du tableau et le troisième (que je n'utilise pas dans l'exemple plus haut) est l'index de l'item dans le tableau.&lt;/p&gt;

&lt;p&gt;Le dernier argument du &lt;code&gt;.reduce()&lt;/code&gt; est la valeur initiale de l'accumulateur (dans l'exemple, "Je sors aujourd'hui avec")...&lt;/p&gt;

&lt;p&gt;La méthode &lt;code&gt;.reduce()&lt;/code&gt; est plus complexe à appréhender dans son mécanisme, mais il s'agit d'une méthode très populaire.&lt;/p&gt;

&lt;p&gt;Le moyen le plus simple d'intégrer ces petits tips sur les arrays est bien évidemment la pratique. Ce sont des réflexes qui se construisent, le fait de penser à intégrer ces petits bouts de code quand une situation se présente ! N'hésitez pas à échanger en commentaires sur d'éventuelles améliorations de ce dont j'ai parlé ici ! Merci pour votre temps et à bientôt.&lt;/p&gt;

&lt;p&gt;Tous les exemples sont disponibles dans le fichier JS sur &lt;a href="https://gist.github.com/Christopher2K/0cceda49f8f85b874cc07764c5bc2fbd"&gt;ce gist Github&lt;/a&gt;&lt;br&gt;
Merci à mes relecteur.rice.s: Eunice, Ibrahima, Anaël.&lt;/p&gt;

&lt;p&gt;Crédit photo de couverture: &lt;a href="https://unsplash.com/@tracycodes"&gt;https://unsplash.com/@tracycodes&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>francais</category>
      <category>french</category>
      <category>array</category>
    </item>
  </channel>
</rss>
