Làm cách nào để thực hiện những điều sau trong JavaScript?
Nối "1", "2", "3" thành "123"
Chuyển "123" thành 123
Thêm 123 + 100 = 223
Chuyển 223 thành "223"
Làm cách nào để thực hiện những điều sau trong JavaScript?
Nối "1", "2", "3" thành "123"
Chuyển "123" thành 123
Thêm 123 + 100 = 223
Chuyển 223 thành "223"
Câu trả lời:
Bạn muốn làm quen với parseInt()
và toString()
.
Và điều hữu ích trong bộ công cụ của bạn sẽ là xem xét một biến để tìm ra loại biến đó— 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"
hoặc là
["1", "2", "3"].join("")
Các tham gia phương pháp concatenates các mục của một mảng thành một chuỗi, đưa delimiter định giữa các mục. Trong trường hợp này, "dấu phân cách" là một chuỗi rỗng ( ""
).
parseInt("123")
Trước ECMAScript 5 , cần phải chuyển cơ số cho cơ số 10:parseInt("123", 10)
123 + 100
(223).toString()
(parseInt("1" + "2" + "3") + 100).toString()
hoặc là
(parseInt(["1", "2", "3"].join("")) + 100).toString()
parseInt
hàm .
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);
Những câu hỏi này luôn xuất hiện do hệ thống đánh máy của JavaScript. Mọi người nghĩ rằng họ đang nhận được một số khi họ nhận được chuỗi một số.
Dưới đây là một số điều bạn có thể thấy lợi dụng cách JavaScript xử lý chuỗi và số. Cá nhân, tôi ước JavaScript đã sử dụng một số ký hiệu khác ngoài + để nối chuỗi.
Bước (1) Nối "1", "2", "3" thành "123"
result = "1" + "2" + "3";
Bước (2) Chuyển "123" thành 123
result = +"123";
Bước (3) Thêm 123 + 100 = 223
result = 123 + 100;
Bước (4) Chuyển 223 thành "223"
result = "" + 223;
Nếu bạn biết TẠI SAO những điều này hoạt động, bạn sẽ ít gặp rắc rối với các biểu thức JavaScript.
Bạn có thể làm như thế này:
// 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
và sau đó chứa 8
hoặc 9
sẽ không thành công, dẫn đến kết quả trả về là 0. Ví dụ: parseInt('034') = 28
và parseInt('09') = 0
.
Để chuyển một chuỗi thành một số, hãy trừ đi 0. Để chuyển một số thành chuỗi, hãy thêm "" (chuỗi trống).
5 + 1 sẽ cho bạn 6
(5 + "") + 1 sẽ cho bạn "51"
("5" - 0) + 1 sẽ cho bạn 6
Dưới đây là một ví dụ rất khó chịu về cách JavaScript có thể khiến bạn gặp rắc rối:
Nếu bạn chỉ cố gắng sử dụng parseInt()
để chuyển đổi thành số và sau đó thêm một số khác vào kết quả, nó sẽ nối hai chuỗi.
Tuy nhiên, bạn có thể giải quyết vấn đề bằng cách đặt biểu thức tổng trong dấu ngoặc đơn như trong ví dụ dưới đây.
Kết quả: Tổng số tuổi của họ là: 98; Tổng tuổi của họ KHÔNG phải là: 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>
Đơn giản nhất là khi bạn muốn biến một số nguyên thành một chuỗi
var a,b, c;
a = 1;
b = a.toString(); // This will give you string
Bây giờ, từ biến b có kiểu chuỗi, chúng ta có thể lấy số nguyên
c = b *1; //This will give you integer value of number :-)
Nếu bạn muốn kiểm tra ở trên là một số. Nếu bạn không chắc b có chứa số nguyên hay không thì bạn có thể sử dụng
if(isNaN(c*1)) {
//NOt a number
}
else //number
Chúng ta có thể làm điều này bằng cách sử dụng toán tử cộng một bậc để chuyển chúng thành số trước tiên và chỉ cần thêm. xem bên dưới:-
var a = "4";
var b = "7";
var sum = +a + +b;