Come posso fare quanto segue in JavaScript?
Concatena "1", "2", "3" in "123"
Converti "123" in 123
Aggiungi 123 + 100 = 223
Trasforma 223 in "223"
Come posso fare quanto segue in JavaScript?
Concatena "1", "2", "3" in "123"
Converti "123" in 123
Aggiungi 123 + 100 = 223
Trasforma 223 in "223"
Risposte:
Vuoi acquisire familiarità con parseInt()
e toString()
.
E utile nel tuo toolkit sarà guardare una variabile per scoprire di che tipo è 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"
o
["1", "2", "3"].join("")
Il metodo join concatena gli elementi di un array in una stringa, inserendo il delimitatore specificato tra gli elementi. In questo caso, il "delimitatore" è una stringa vuota ( ""
).
parseInt("123")
Prima di ECMAScript 5 , era necessario passare la radice per la base 10:parseInt("123", 10)
123 + 100
(223).toString()
(parseInt("1" + "2" + "3") + 100).toString()
o
(parseInt(["1", "2", "3"].join("")) + 100).toString()
parseInt
funzione .
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);
Queste domande sorgono continuamente a causa del sistema di digitazione di JavaScript. Le persone pensano di ottenere un numero quando ricevono la stringa di un numero.
Ecco alcune cose che potresti vedere che traggono vantaggio dal modo in cui JavaScript gestisce stringhe e numeri. Personalmente, vorrei che JavaScript avesse usato un simbolo diverso da + per la concatenazione di stringhe.
Passaggio (1) Concatena "1", "2", "3" in "123"
result = "1" + "2" + "3";
Passaggio (2) Converti "123" in 123
result = +"123";
Passaggio (3) Aggiungi 123 + 100 = 223
result = 123 + 100;
Passaggio (4) Converti 223 in "223"
result = "" + 223;
Se sai PERCHÉ funzionano, è meno probabile che tu abbia problemi con le espressioni JavaScript.
Puoi farlo in questo modo:
// 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
saranno visti come numeri ottali (base 8) .
0
e poi contengono 8
o 9
falliranno, portando a un ritorno di 0. Ad esempio parseInt('034') = 28
, e parseInt('09') = 0
.
Per convertire una stringa in un numero, sottrarre 0. Per convertire un numero in una stringa, aggiungere "" (la stringa vuota).
5 + 1 ti darà 6
(5 + "") + 1 ti darà "51"
("5" - 0) + 1 ti darà 6
Di seguito è riportato un esempio molto irritante di come JavaScript può metterti nei guai:
Se provi a usare solo parseInt()
per convertire in numero e poi aggiungi un altro numero al risultato, concatenerà due stringhe.
Tuttavia, è possibile risolvere il problema inserendo l'espressione di somma tra parentesi come mostrato nell'esempio seguente.
Risultato: la somma della loro età è: 98; La loro somma di età NON è: 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>
Il più semplice è quando vuoi rendere un numero intero una stringa
var a,b, c;
a = 1;
b = a.toString(); // This will give you string
Ora, dalla variabile b che è di tipo stringa possiamo ottenere l'intero
c = b *1; //This will give you integer value of number :-)
Se vuoi controllare sopra c'è un numero. Se non sei sicuro che b contenga un numero intero, puoi usare
if(isNaN(c*1)) {
//NOt a number
}
else //number
Possiamo farlo usando l' operatore più unario per convertirli prima in numeri e aggiungerli semplicemente. vedi sotto:-
var a = "4";
var b = "7";
var sum = +a + +b;