Comment puis-je effectuer les opérations suivantes en JavaScript?
Concaténer «1», «2», «3» en «123»
Convertir "123" en 123
Ajouter 123 + 100 = 223
Cacher 223 dans "223"
Comment puis-je effectuer les opérations suivantes en JavaScript?
Concaténer «1», «2», «3» en «123»
Convertir "123" en 123
Ajouter 123 + 100 = 223
Cacher 223 dans "223"
Réponses:
Vous souhaitez 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 dans 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 passer 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()
parseInt
fonction .
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 tout le temps en raison du système de saisie de JavaScript. Les gens pensent qu'ils obtiennent un nombre lorsqu'ils obtiennent la chaîne d'un nombre.
Voici quelques éléments que vous pourriez voir qui tirent parti de la façon 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) Convertissez "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 êtes moins susceptible d'avoir des problèmes avec les expressions JavaScript.
Vous pouvez le faire comme ceci:
// 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"
0
seront considérées comme des nombres octaux (base 8) .
0
et contenant 8
ou 9
échoueront, conduisant à un retour de 0. Par exemple,, parseInt('034') = 28
et parseInt('09') = 0
.
Pour convertir une chaîne en nombre, soustrayez 0. Pour convertir un nombre en chaîne, ajoutez "" (la chaîne vide).
5 + 1 vous donneront 6
(5 + "") + 1 vous donnera "51"
("5" - 0) + 1 vous donnera 6
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 plaçant l'expression de somme entre parenthèses, comme illustré dans l'exemple ci-dessous.
Résultat: leur âge total est de: 98 ans; Leur âge total 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>
Le plus simple est lorsque vous voulez faire d'un entier une 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 string, nous pouvons obtenir l'entier
c = b *1; //This will give you integer value of number :-)
Si vous voulez vérifier ci-dessus, c'est un nombre. Si vous n'êtes pas sûr que b contient un entier, vous pouvez utiliser
if(isNaN(c*1)) {
//NOt a number
}
else //number
Nous pouvons le faire en utilisant l' opérateur unaire plus pour les convertir d'abord en nombres et simplement les ajouter. voir ci-dessous:-
var a = "4";
var b = "7";
var sum = +a + +b;