Bagaimana saya bisa melakukan hal berikut di JavaScript?
Gabungkan "1", "2", "3" menjadi "123"
Ubah "123" menjadi 123
Tambahkan 123 + 100 = 223
Ubah 223 menjadi "223"
Bagaimana saya bisa melakukan hal berikut di JavaScript?
Gabungkan "1", "2", "3" menjadi "123"
Ubah "123" menjadi 123
Tambahkan 123 + 100 = 223
Ubah 223 menjadi "223"
Jawaban:
Anda ingin mengenal parseInt()dan toString().
Dan berguna dalam toolkit Anda adalah melihat variabel untuk mengetahui jenisnya— 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"
atau
["1", "2", "3"].join("")
The bergabung metode merangkai item dari sebuah array ke dalam string, menempatkan pembatas tertentu antara item. Dalam kasus ini, "pembatas" adalah string kosong ( "").
parseInt("123")
Sebelum ECMAScript 5 , perlu melewati radix untuk basis 10:parseInt("123", 10)
123 + 100
(223).toString()
(parseInt("1" + "2" + "3") + 100).toString()
atau
(parseInt(["1", "2", "3"].join("")) + 100).toString()
parseIntfungsi tersebut .
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);
Pertanyaan-pertanyaan ini muncul setiap saat karena sistem pengetikan JavaScript. Orang mengira mereka mendapatkan nomor ketika mereka mendapatkan rangkaian angka.
Berikut beberapa hal yang mungkin Anda lihat yang memanfaatkan cara JavaScript menangani string dan angka. Secara pribadi, saya berharap JavaScript telah menggunakan beberapa simbol selain + untuk penggabungan string.
Langkah (1) Gabungkan "1", "2", "3" menjadi "123"
result = "1" + "2" + "3";
Langkah (2) Ubah "123" menjadi 123
result = +"123";
Langkah (3) Tambahkan 123 + 100 = 223
result = 123 + 100;
Langkah (4) Ubah 223 menjadi "223"
result = "" + 223;
Jika Anda tahu MENGAPA ini berfungsi, Anda cenderung tidak mengalami masalah dengan ekspresi JavaScript.
Anda bisa melakukannya seperti ini:
// 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"
0akan terlihat sebagai angka oktal (basis 8) .
0dan kemudian mengandung 8atau 9akan gagal, mengarah ke pengembalian 0. Misalnya parseInt('034') = 28,, dan parseInt('09') = 0.
Untuk mengubah string menjadi angka, kurangi 0. Untuk mengubah angka menjadi string, tambahkan "" (string kosong).
5 + 1 akan memberi Anda 6
(5 + "") + 1 akan memberi Anda "51"
("5" - 0) +1 akan menghasilkan 6
Di bawah ini adalah contoh yang sangat menjengkelkan tentang bagaimana JavaScript dapat membuat Anda mendapat masalah:
Jika Anda hanya mencoba menggunakan parseInt()to convert to number dan kemudian menambahkan angka lain ke hasilnya, itu akan menggabungkan dua string.
Namun, Anda bisa menyelesaikan soal dengan menempatkan ekspresi jumlah dalam tanda kurung seperti yang ditunjukkan pada contoh di bawah ini.
Hasil: Jumlah usia mereka: 98; Jumlah usia mereka BUKAN: 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>
Paling sederhana adalah ketika Anda ingin membuat integer menjadi string
var a,b, c;
a = 1;
b = a.toString(); // This will give you string
Sekarang, dari variabel b yang bertipe string kita bisa mendapatkan integer
c = b *1; //This will give you integer value of number :-)
Jika mau cek diatas adalah angka. Jika Anda tidak yakin apakah b berisi integer maka Anda dapat menggunakan
if(isNaN(c*1)) {
//NOt a number
}
else //number
Kita dapat melakukan ini dengan menggunakan operator unary plus untuk mengonversinya menjadi angka terlebih dahulu dan cukup menambahkan. Lihat di bawah:-
var a = "4";
var b = "7";
var sum = +a + +b;