web-dev-qa-db-fra.com

Conversion de chaîne et de nombre JavaScript

Comment puis-je effectuer les opérations suivantes en JavaScript?

  1. Concaténer "1", "2", "3" dans "123"

  2. Convertir "123" en 123

  3. Ajouter 123 + 100 = 223

  4. Covert 223 dans "223"

84
user366312

Vous voulez vous familiariser avec parseInt() et toString() .

Et utile dans votre boîte à outils sera de regarder une variable pour savoir de quel type il s’agit - typeof :

<script type="text/javascript">
    /**
     * print out the value and the type of the variable passed in
     */

    function printWithType(val) {
        document.write('<pre>');
        document.write(val);
        document.write(' ');
        document.writeln(typeof val);
        document.write('</pre>');
    }

    var a = "1", b = "2", c = "3", result;

    // Step (1) Concatenate "1", "2", "3" into "123"
    // - concatenation operator is just "+", as long
    //   as all the items are strings, this works
    result = a + b + c;
    printWithType(result); //123 string

    // - If they were not strings you could do
    result = a.toString() + b.toString() + c.toString();
    printWithType(result); // 123 string

    // Step (2) Convert "123" into 123
    result = parseInt(result,10);
    printWithType(result); // 123 number

    // Step (3) Add 123 + 100 = 223
    result = result + 100;
    printWithType(result); // 223 number

    // Step (4) Convert 223 into "223"
    result = result.toString(); //
    printWithType(result); // 223 string

    // If you concatenate a number with a 
    // blank string, you get a string    
    result = result + "";
    printWithType(result); //223 string
</script>
115
artlung

Étape (1) Concaténer "1", "2", "3" en "123"

 "1" + "2" + "3"

ou

 ["1", "2", "3"].join("")

La méthode join concatène les éléments d'un tableau en une chaîne, en plaçant le délimiteur spécifié entre les éléments. Dans ce cas, le "délimiteur" est une chaîne vide (""). 


Étape (2) Convertir "123" en 123

 parseInt("123")

Avant ECMAScript 5 , il était nécessaire de transmettre la base pour la base 10: parseInt("123", 10)


Étape (3) Ajouter 123 + 100 = 223

 123 + 100


Étape (4) Transformez 223 en "223"

 (223).toString() 


Mettez tout cela

 (parseInt("1" + "2" + "3") + 100).toString()

ou

 (parseInt(["1", "2", "3"].join("")) + 100).toString()
50
r = ("1"+"2"+"3")           // step1 | build string ==> "123"
r = +r                      // step2 | to number    ==> 123
r = r+100                   // step3 | +100         ==> 223
r = ""+r                    // step4 | to string    ==> "223"

//in one line
r = ""+(+("1"+"2"+"3")+100);
25
cesarl

Ces questions reviennent constamment à cause du système de dactylographie de JavaScript. Les gens pensent qu'ils obtiennent un numéro lorsqu'ils reçoivent la chaîne d'un nombre.

Vous constaterez peut-être certaines choses qui tirent parti de la manière dont JavaScript traite les chaînes et les nombres. Personnellement, j'aurais aimé que JavaScript utilise un symbole autre que + pour la concaténation de chaînes.

Étape (1) Concaténer "1", "2", "3" en "123"

result = "1" + "2" + "3";

Étape (2) Convertir "123" en 123

result = +"123";

Étape (3) Ajouter 123 + 100 = 223

result = 123 + 100;

Étape (4) Convertissez 223 en "223"

result = "" + 223;

Si vous savez POURQUOI cela fonctionne, vous aurez moins de problèmes avec les expressions JavaScript.

14
Nosredna

Vous pouvez le faire comme ça:

// step 1 
var one = "1" + "2" + "3"; // string value "123"

// step 2
var two = parseInt(one); // integer value 123

// step 3
var three = 123 + 100; // integer value 223

// step 4
var four = three.toString(); // string value "223"
11
Andrew Hare

Pour convertir une chaîne en nombre, soustrayez 0 . Pour convertir un nombre en chaîne, ajoutez "" (la chaîne vide).

5 + 1 vous en donnera 6

(5 + "") + 1 vous donnera "51"

("5" - 0) + 1 vous donnera 6

8
Robert L

parseInt est mal traité comme scanf:

 parseInt ("12 singes", 10) est un nombre avec la valeur '12' + "12 singes" est un nombre avec la valeur 'NaN' Number ("12 singes") est un nombre avec valeur 'NaN' 

5
xander

Voici un exemple très irritant de la façon dont JavaScript peut vous causer des problèmes:

Si vous essayez simplement d'utiliser parseInt() pour convertir en nombre, puis ajoutez un autre nombre au résultat, il concaténera deux chaînes. 

Cependant, vous pouvez résoudre le problème en en plaçant l'expression de la somme entre parenthèses comme indiqué dans l'exemple ci-dessous.

Résultat: leur tranche d'âge est: 98; Leur somme d'âge n'est pas: 5048

<!DOCTYPE html>
<html>
<body>

<p id="demo"></p>

<script>
function Person(first, last, age, eye) {
    this.firstName = first;
    this.lastName = last;
    this.age = age;
    this.eyeColor = eye;
}

var myFather = new Person("John", "Doe", "50", "blue");
var myMother = new Person("Sally", "Rally", 48, "green");

document.getElementById("demo").innerHTML = "Their age sum is: "+
 (parseInt(myFather.age)+myMother.age)+"; Their age sum is NOT: " +
 parseInt(myFather.age)+myMother.age; 
</script>

</body>
</html>

1
jpsousa

Nous pouvons le faire en utilisant unary plus operator pour les convertir en nombres d’abord et simplement les ajouter. voir ci-dessous:-

var a = "4";
var b = "7";
var sum = +a + +b; 
0
hemant

Le plus simple est .__ quand vous voulez transformer un entier en chaîne

var a,b, c;
a = 1;
b = a.toString(); // This will give you string

Maintenant, à partir de la variable b qui est de type chaîne, on peut obtenir le nombre entier

c = b *1; //This will give you integer value of number :-)

Si vous voulez vérifier ci-dessus est un nombre. Si vous n'êtes pas sûr si b contient un entier .__, alors vous pouvez utiliser 

if(isNaN(c*1)) {
  //NOt a number
}
else //number
0
Kshitiz