Comment puis-je effectuer les opérations suivantes en JavaScript?
Concaténer "1", "2", "3" dans "123"
Convertir "123" en 123
Ajouter 123 + 100 = 223
Covert 223 dans "223"
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>
"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 (""
).
parseInt("123")
Avant ECMAScript 5 , il était nécessaire de transmettre la base pour la base 10: parseInt("123", 10)
123 + 100
(223).toString()
(parseInt("1" + "2" + "3") + 100).toString()
ou
(parseInt(["1", "2", "3"].join("")) + 100).toString()
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);
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.
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"
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
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'
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>
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;
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