Tôi muốn một cái gì đó giống như 5 + 6trả lại "56"thay vì 11.
Tôi muốn một cái gì đó giống như 5 + 6trả lại "56"thay vì 11.
Câu trả lời:
Sử dụng "" + 5 + 6để buộc nó vào chuỗi. Điều này cũng hoạt động với các biến số:
var a = 5;
var b = 6;
console.log("" + a + b);
const numbersAsString = `${5}${6}`;
var value = "" + 5 + 6;
alert(value);
Bây giờ bạn có thể sử dụng các ký tự mẫu ES6 .
const numbersAsString = `${5}${6}`;
console.log(numbersAsString); // Outputs 56
Hoặc, nếu bạn có các biến:
const someNumber = 5;
const someOtherNumber = 6;
const numbersAsString = `${someNumber}${someOtherNumber}`;
console.log(numbersAsString); // Outputs 56
Cá nhân tôi thấy cú pháp mới rõ ràng hơn nhiều, mặc dù hơi dài dòng.
chỉ dùng:
5 + "" + 6
câu trả lời đơn giản:
5 + '' + 6;
Sử dụng
var value = "" + 5 + 6;
để buộc nó vào chuỗi.
Tôi biết đây là một bài viết cũ và đã được trả lời nhiều lần. Tôi cũng đã tự hỏi liệu JavaScript có một chức năng nào làm được điều này hay không. Tôi đang thực hiện một số lập trình toán học và cần nối hai số.
Vì vậy, điều gì xảy ra nếu tôi cần kết hợp hai số 17 và 29. Chắc chắn tôi có thể biến chúng thành chuỗi và nối chúng sau đó biến chuỗi mới trở lại thành một số. Điều đó có vẻ hoạt động khá tốt và tôi có thể tiếp tục với mã của mình, nhưng chúng ta hãy xem ở đây và cố gắng tìm ra những gì đang thực sự xảy ra ở đây.
Chúng ta đang làm gì với hai số này, làm thế nào để lấy 17 và 29 và biến nó thành một nghìn bảy trăm hai mươi chín? Chúng ta có thể nhân 17 với 100 rồi cộng 29. Và 172 và 293 thì sao để có một trăm bảy mươi hai nghìn hai trăm chín mươi ba? Nhân 172 với 1000 và cộng 293. Nhưng chỉ 2 và 9 thì sao? Nhân 2 với 10 rồi thêm 9 để được 29.
Vì vậy, hy vọng bây giờ một khuôn mẫu sẽ rõ ràng với bạn. Chúng ta có thể nghĩ ra một công thức toán học để thực hiện phép tính này thay vì chỉ sử dụng chuỗi. Để ghép hai số a và b bất kỳ, ta cần lấy tích của a và 10 thành lũy thừa của độ dài b rồi cộng b.
Vậy làm thế nào để nhận được độ dài của số b? Chà, chúng ta có thể biến b thành một chuỗi và lấy thuộc tính độ dài của nó.
a * Math.pow(10, new String(b).length) + b;
Nhưng phải có một cách tốt hơn để làm điều này mà không cần dây, phải không? Có, có.
Với hai số bất kỳ, a và b, với bất kỳ cơ số B. Chúng ta sẽ nhân a với cơ số B với lũy thừa của độ dài b (sử dụng cơ số log của b sau đó xếp chồng lên nhau để có được số nguyên gần nhất rồi cộng 1 với nó) sau đó thêm b.
Vì vậy, bây giờ mã của chúng tôi trông giống như sau:
a * Math.pow(10, Math.floor(Math.log10(b)) + 1) + b;
Nhưng chờ đã, nếu tôi muốn làm điều này ở cơ sở 2 hoặc cơ sở 8 thì sao? Làm thế nào tôi có thể làm điều đó? Chúng ta không thể sử dụng công thức mà chúng ta vừa tạo với bất kỳ cơ số nào khác ngoài cơ số 10. Đối tượng JavaScript Math đã có sẵn các hàm cho cơ sở 10 và 2 (chỉ Math.log), nhưng làm cách nào để chúng ta có được các hàm log cho bất kỳ cơ sở khác? Chúng ta chia log của b cho log của cơ số.Math.log(b) / Math.log(base).
Vì vậy, bây giờ chúng tôi có mã dựa trên toán học hoạt động đầy đủ của chúng tôi để nối hai số:
function concatenate(a, b, base) {
return a * Math.pow(base, Math.floor(Math.log(b) / Math.log(base)) + 1) + b;
}
var a = 17, var b = 29;
var concatenatedNumber = concatenate(a, b, 10);
// concatenatedNumber = 1729
Nếu bạn biết rằng bạn sẽ chỉ làm toán cơ sở 10, bạn có thể thêm một kiểm tra cho cơ sở là không xác định sau đó đặt base = 10:
function concatenate(a, b, base) {
if(typeof base == 'undefined') {
base = 10;
}
return a * Math.pow(base, Math.floor(Math.log(b) / Math.log(base)) + 1) + b;
}
var a = 17, b = 29;
var newNumber = concatenate(a, b); // notice I did not use the base argument
// newNumber = 1729
Để giúp tôi dễ dàng hơn, tôi đã sử dụng nguyên mẫu để thêm hàm vào đối tượng Number:
Number.prototype.concatenate = function(b, base) {
if(typeof base == 'undefined') {
base = 10;
}
return this * Math.pow(base, Math.floor(Math.log(b) / Math.log(base)) + 1) + b;
};
var a = 17;
var newNumber = a.concatenate(29);
// newNumber = 1729
Bạn cũng có thể sử dụng toStringhàm để chuyển đổi nó thành chuỗi và nối.
var a = 5;
var b = 6;
var value = a.toString() + b.toString();
enter code here
var a = 9821099923;
var b = 91;
alert ("" + b + a);
// after concating , result is 919821099923 but its is now converted
into string
console.log(Number.isInteger("" + b + a)) // false
you have to do something like below:-
var c= parseInt("" + b + a)
console.log(c); // 919821099923
console.log(Number.isInteger(c)) // true
Đây là cách dễ dàng để làm điều này
var value=5+""+6;
Tôi đã chuyển đổi lại thành số như thế này ..
const timeNow = '' + 12 + 45;
const openTime = parseInt(timeNow, 10);
sản lượng 1245
-- biên tập --
lấy làm tiếc,
đối với việc sử dụng của tôi, điều này vẫn không hoạt động đối với tôi sau khi thử nghiệm. Tôi đã phải thêm lại số 0 bị thiếu vì nó đang bị xóa trên các số nhỏ hơn 10, mục đích sử dụng của tôi là để cho mã chạy vào những thời điểm nhất định Có thể không đúng nhưng nó có vẻ hoạt động (cho đến nay).
h = new Date().getHours();
m = new Date().getMinutes();
isOpen: boolean;
timeNow = (this.m < 10) ? '' + this.h + 0 + this.m : '' + this.h + this.m;
openTime = parseInt(this.timeNow);
closed() {
(this.openTime >= 1450 && this.openTime <= 1830) ? this.isOpen = true :
this.isOpen = false;
(this.openTime >= 715 && this.openTime <= 915) ? this.isOpen = true :
this.isOpen = false;
}
Cuộc bỏ phiếu xuống rất hay, cảm ơn bạn :)
Tôi mới làm quen với điều này và đến đây để tìm hiểu từ các bạn một lời giải thích về lý do tại sao sẽ tốt.
Dù sao cũng cập nhật mã của tôi để hiển thị cách tôi khắc phục sự cố của mình vì bài đăng này đã giúp tôi tìm ra nó.
Để thêm vào tất cả các câu trả lời ở trên, tôi muốn chia sẻ logic cơ bản:
Plus là một toán tử bổ sung cũng được sử dụng để nối các chuỗi. Khi chúng ta muốn nối các số. Tôi nên hiểu rằng chúng tôi muốn nối các chuỗi, vì việc nối các số không tạo ra các trường hợp sử dụng hợp lệ đối với tôi.
Chúng ta có thể đạt được điều đó bằng nhiều cách,
Thông qua chuyển đổi loại
let a = 5;
a.toString()+5 // Output 55 type "string"
Điều này cũng sẽ hoạt động và thực hiện chuyển đổi kiểu trong nền,
5 +""+ 5 // Output 55 type "string"
Nếu bạn quyết định nối hai chuỗi và kiểu đầu ra phải là int, thì parseInt () hoạt động ở đây
parseInt(5 +""+ 5) //Output 55 Type "number"