Comment convertir des types de données en JavaScript

introduction

En JavaScript, lesdata types sont utilisés pour classer un type particulier de données, en déterminant les valeurs que vous pouvez attribuer au type et les opérations que vous pouvez effectuer dessus.

Bien qu'en raison detype coercion, JavaScript convertisse automatiquement de nombreuses valeurs, il est souvent recommandé de convertir manuellement les valeurs entre les types afin d'obtenir les résultats attendus.

Ce didacticiel vous guidera dans la conversion des types de données primitifs de JavaScript, y compris les nombres, les chaînes et les booléens.

Conversion implicite

En tant que langage de programmation, JavaScript tolère très bien les valeurs inattendues. De ce fait, JavaScript tentera de convertir des valeurs inattendues plutôt que de les rejeter d'emblée. Cette conversion implicite est connue sous le nom de coercition de type.

Certaines méthodes convertissent automatiquement les valeurs afin de les utiliser. Lealert() method prend une chaîne comme paramètre, mais il convertira automatiquement les autres types en chaînes. Nous pouvons donc passer une valeur numérique à la méthode:

alert(8.5);

Si nous exécutons la ligne ci-dessus, le navigateur retournera une boîte de dialogue d'alerte contextuelle qui affiche la valeur de8.5 sauf qu'elle aura été convertie en chaîne pour ce faire.

Lorsque vous utilisez des chaînes qui peuvent être évaluées en nombres avecmathematical operators, vous constaterez que JavaScript est capable de gérer les valeurs en convertissant implicitement les chaînes en nombres, comme indiqué dans les exemples ci-dessous.

// Subtraction
"15" - "10";
Output5
// Modulo
"15" % "10";
Output5

Cependant, tous les opérateurs ne fonctionneront pas comme prévu. L'opérateur+ est particulièrement problématique car il peut signifier soit une addition soitstring concatenation.

// When working with strings, + stands for concatenation
"2" + "3";
Output"23"

Étant donné que l'opérateur+ est polyvalent, les valeurs de chaîne de2 et3, bien qu'elles soient des chaînes numériques, sont concaténées à la valeur de chaîne de23 plutôt qu'additionnées ensemble être le nombre5.

Dans la mesure où l'ambiguïté peut exister et parfois provoquer des résultats inattendus, il est souvent préférable de convertir explicitement autant que possible les types de données dans votre code. Cela vous aidera à gérer les commentaires des utilisateurs et à gérer les erreurs.

Conversion de valeurs en chaînes

Les valeurs peuvent être explicitement converties en chaînes en appelantString() oun.toString().

Avec la fonctionString(), convertissons unBoolean value en chaîne en passant la valeurtrue dans les paramètres deString().

String(true);

Lorsque nous faisons cela, la chaîne littérale"true" sera renvoyée.

Output"true"

Alternativement, nous pouvons passer un nombre à la fonction.

String(49);

Une chaîne littérale de ce nombre sera renvoyée.

Output"49"

Utilisons la fonctionString() avec une variable. Nous attribuerons une valeur numérique à la variableodyssey, puis utiliserons l'opérateurtypeof pour vérifier le type.

let odyssey = 2001;
console.log(typeof odyssey);
Outputnumber

À ce stade, la variableodyssey reçoit la valeur numérique de2001, que nous avons confirmé être un nombre.

Maintenant, réaffectonsodyssey à son équivalent chaîne, puis utilisonstypeof pour confirmer que nous avons réussi à convertir la valeur de la variable d'un nombre en une chaîne.

odyssey = String(odyssey);  // "2001"
console.log(typeof odyssey);
Outputstring

Dans l'exemple ci-dessus, nous avons confirmé queodyssey a été réaffecté pour être équivalent à une valeur de chaîne après la conversion du type de données.

Nous pouvons utilisern.toString() de la même manière. On peut remplacern par une variable:

let blows = 400;
blows.toString();

La variableblows sera renvoyée sous forme de chaîne.

Output"400"

Alternativement, nous pouvons mettre une valeur entre parenthèses plutôt qu'une variable avecn.toString():

(1776).toString();          // returns "1776"
(false).toString();         // returns "false"
(100 + 200).toString();     // returns "300"

En utilisantString() oun.toString(), nous sommes en mesure de convertir explicitement les valeurs de Boolean ounumber data types en valeurs de chaîne afin de garantir que notre code se comporte comme prévu.

Conversion de valeurs en nombres

Lors de la conversion de valeurs en un type de données numérique, nous utiliserons la méthode «Number ()». Nous allons principalement convertir des chaînes de texte numérique en nombres, mais nous pouvons également convertir des valeurs booléennes.

Nous pouvons passer une chaîne de nombre à la méthodeNumber():

Number("1984");

La chaîne sera convertie en un nombre et ne sera plus entourée de guillemets.

Output1984

Nous pouvons également affecter une chaîne à une variable, puis la convertir.

let dalmatians = "101";
Number(dalmatians);
Output101

La chaîne littérale"101" a été convertie en nombre101 via sa variable.

Les chaînes d'espaces blancs ou de chaînes vides seront converties en0.

Number(" ");    // returns 0
Number("");     // returns 0

Sachez que les chaînes de non-nombres seront converties enNaN qui signifieNotaNumber. Cela inclut les nombres séparés par des espaces.

Number("twelve");   // returns NaN
Number("20,000");   // returns NaN
Number("2 3");      // returns NaN
Number("11-11-11"); // returns NaN

Pour les types de données booléens,false évaluera à0 ettrue évaluera à1.

Number(false);      // returns 0
Number(true);       // returns 1

La méthodeNumber() convertit les types de données non numériques en nombres.

Conversion de valeurs en booléens

Pour convertir des nombres ou des chaînes en valeurs booléennes, la méthodeBoolean() est utilisée. Cela peut être utile pour déterminer si un utilisateur a entré des données dans un champ de texte ou non, par exemple.

Toute valeur interprétée comme vide, comme le nombre0, une chaîne vide ou les valeurs non définies ouNaN ounull sont converties enfalse.

Boolean(0);         // returns false
Boolean("");        // returns false
Boolean(undefined); // returns false
Boolean(NaN);       // returns false
Boolean(null);      // returns false

Les autres valeurs seront converties entrue, y compris les chaînes littérales composées d'espaces blancs.

Boolean(2000);      // returns true
Boolean(" ");       // returns true
Boolean("Maniacs"); // returns true

Notez que"0" en tant que littéral de chaîne sera converti entrue car il s'agit d'une valeur de chaîne non vide:

Boolean("0");   // returns true

La conversion de nombres et de chaînes en valeurs booléennes peut nous permettre d'évaluer des données en termes binaires et peut être exploitée pour le contrôle du flux dans nos programmes.

Conclusion

Ce didacticiel explique comment JavaScript gère la conversion de ses types de données primitifs. Bien que, du fait de la contrainte de type, les types de données convertissent implicitement dans de nombreux cas, il est courant de convertir explicitement les types de données afin de garantir que les programmes fonctionnent comme prévu.

Pour en savoir plus sur les types de données JavaScript, lisez «https://www.digitalocean.com/community/tutorials/understanding-data-types-in-javascript[Comprendre les types de données en JavaScript].» Pour savoir comment la conversion des types de données est effectuée Dans d'autres langages de programmation, consultez «https://www.digitalocean.com/community/tutorials/how-to-convert-data-types-in-python-3[Comment convertir les types de données en Python 3]. ”