ฉันต้องการหาสิ่งที่ต้องการ5 + 6ที่จะกลับมาแทน"56"11
ฉันต้องการหาสิ่งที่ต้องการ5 + 6ที่จะกลับมาแทน"56"11
คำตอบ:
ใช้"" + 5 + 6บังคับให้เข้ากับสตริง สิ่งนี้ใช้ได้กับตัวแปรตัวเลขเช่นกัน:
var a = 5;
var b = 6;
console.log("" + a + b);
const numbersAsString = `${5}${6}`;
var value = "" + 5 + 6;
alert(value);
ตอนนี้คุณสามารถใช้ประโยชน์จากแม่แบบES6ได้
const numbersAsString = `${5}${6}`;
console.log(numbersAsString); // Outputs 56
หรือถ้าคุณมีตัวแปร:
const someNumber = 5;
const someOtherNumber = 6;
const numbersAsString = `${someNumber}${someOtherNumber}`;
console.log(numbersAsString); // Outputs 56
โดยส่วนตัวแล้วฉันพบว่าไวยากรณ์ใหม่ชัดเจนกว่ามากแม้ว่าจะละเอียดกว่าเล็กน้อย
เพียงใช้:
5 + "" + 6
คำตอบง่ายๆ:
5 + '' + 6;
var output = 5 + '' + 6;
ใช้
var value = "" + 5 + 6;
เพื่อบังคับให้เป็นสตริง
ฉันรู้ว่านี่เป็นโพสต์เก่าและได้รับคำตอบหลายครั้ง ฉันก็สงสัยเหมือนกันว่า JavaScript มีฟังก์ชันที่จะทำสิ่งนี้ได้หรือไม่ ฉันกำลังเขียนโปรแกรมทางคณิตศาสตร์และจำเป็นต้องต่อตัวเลขสองตัวเข้าด้วยกัน
แล้วถ้าผมต้องการรวมเลขสองตัว 17 กับ 29 เข้าด้วยกันแน่นอนว่าผมสามารถเปลี่ยนมันให้เป็นสตริงและเชื่อมมันเข้าด้วยกันจากนั้นเปลี่ยนสตริงใหม่กลับเป็นตัวเลข ดูเหมือนว่าจะใช้งานได้ดีและฉันสามารถใช้โค้ดของฉันต่อไปได้ แต่ลองดูที่นี่และลองคิดว่าเกิดอะไรขึ้นที่นี่
เรากำลังทำอะไรกับตัวเลขสองตัวนี้เราจะเอา 17 กับ 29 ไปเปลี่ยนเป็นหนึ่งพันเจ็ดร้อยยี่สิบเก้าได้อย่างไร? ทีนี้เราก็คูณ 17 ด้วย 100 แล้วบวก 29 แล้ว 172 กับ 293 จะได้หนึ่งแสนเจ็ดหมื่นสองพันสองร้อยเก้าสิบสามได้อย่างไร? คูณ 172 ด้วย 1000 แล้วบวก 293 แล้วมีแค่ 2 กับ 9 ล่ะ? คูณ 2 ด้วย 10 แล้วบวก 9 เพื่อรับ 29
ดังนั้นหวังว่าตอนนี้รูปแบบน่าจะชัดเจนสำหรับคุณ เราสามารถคิดค้นสูตรทางคณิตศาสตร์เพื่อทำการคำนวณนี้แทนการใช้สตริง ในการเชื่อมเลขสองตัวใด ๆ a และ b เราต้องนำผลคูณของ a และ 10 มารวมกับความยาว b แล้วบวก b
แล้วเราจะได้ความยาวของเลข b ได้อย่างไร? ทีนี้เราเปลี่ยน b ให้เป็นสตริงและได้คุณสมบัติความยาวของมัน
a * Math.pow(10, new String(b).length) + b;
แต่จะต้องมีวิธีที่ดีกว่านี้ในการทำสิ่งนี้โดยไม่ต้องมีสายใช่ไหม? ใช่มี.
สำหรับสองจำนวนใด ๆ a และ b โดยมีฐาน B ใด ๆ เราจะคูณ a ด้วยฐาน B ด้วยกำลังของความยาว b (โดยใช้ฐานล็อกของ b จากนั้นปูพื้นเพื่อให้ได้จำนวนเต็มที่ใกล้ที่สุดจากนั้นจึงเพิ่ม 1 เข้าไป) จากนั้นเพิ่ม b
ตอนนี้รหัสของเรามีลักษณะดังนี้:
a * Math.pow(10, Math.floor(Math.log10(b)) + 1) + b;
แต่เดี๋ยวก่อนถ้าฉันต้องการทำสิ่งนี้ในฐาน 2 หรือฐาน 8 ล่ะ? ฉันจะทำเช่นนั้นได้อย่างไร? เราไม่สามารถใช้สูตรของเราที่เราเพิ่งสร้างขึ้นด้วยฐานอื่น ๆ แต่เป็นฐาน 10 วัตถุ JavaScript Math มีฟังก์ชันในตัวสำหรับฐาน 10 และ 2 อยู่แล้ว (เฉพาะ Math.log) แต่เราจะรับฟังก์ชันบันทึกสำหรับสิ่งใด ๆ ฐานอื่น ๆ ? เราแบ่งบันทึกของ b ด้วยบันทึกของฐานMath.log(b) / Math.log(base).
ตอนนี้เรามีรหัสตามคณิตศาสตร์ที่ทำงานได้อย่างสมบูรณ์สำหรับการเชื่อมต่อตัวเลขสองตัว:
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
หากคุณรู้ว่าคุณกำลังจะทำคณิตศาสตร์ฐาน 10 เท่านั้นคุณสามารถเพิ่มการตรวจสอบฐานที่ไม่ได้กำหนดแล้วตั้งค่าฐาน = 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
เพื่อให้ง่ายขึ้นสำหรับฉันฉันใช้ต้นแบบเพื่อเพิ่มฟังก์ชันให้กับวัตถุ 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
คุณยังสามารถใช้toStringฟังก์ชันเพื่อแปลงเป็นสตริงและต่อกันได้
var a = 5;
var b = 6;
var value = a.toString() + b.toString();
ความเป็นไปได้อื่นอาจเป็นดังนี้:
var concat = String(5) + String(6);
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
นี่เป็นวิธีง่ายๆในการทำเช่นนี้
var value=5+""+6;
แปลงกลับเป็นเลขแบบนี้ ..
const timeNow = '' + 12 + 45;
const openTime = parseInt(timeNow, 10);
เอาต์พุต 1245
- แก้ไข -
ขอโทษ
สำหรับการใช้งานของฉันสิ่งนี้ยังไม่ได้ผลสำหรับฉันหลังจากการทดสอบ ฉันต้องเพิ่มศูนย์ที่หายไปกลับเข้าไปในขณะที่มันถูกลบออกในตัวเลขที่เล็กกว่า 10 การใช้งานของฉันคือการปล่อยให้รหัสทำงานในบางช่วงเวลาอาจไม่ถูกต้อง แต่ดูเหมือนว่าจะใช้งานได้ (จนถึงตอนนี้)
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;
}
โหวตลงได้ดีขอบคุณ :)
ฉันยังใหม่กับสิ่งนี้และมาที่นี่เพื่อเรียนรู้คำอธิบายจากพวกคุณว่าทำไมถึงดี
ยังคงอัปเดตรหัสของฉันเพื่อแสดงว่าฉันแก้ไขปัญหาของฉันได้อย่างไรเนื่องจากโพสต์นี้ช่วยฉันคิดออก
ฉันชอบconcatวิธี:
const numVar1 = 5;
const numVar2 = 6;
const value = "".concat(numVar1, numVar2);
// or directly with values
const value2 = "".concat(5, 6);
คุณยังสามารถใช้อาร์เรย์ซึ่งสามารถช่วยได้ในบางกรณีการใช้งาน:
const value3 = [5, 6, numVar1].join('');
คุณสามารถส่งคืนตัวเลขโดยใช้เคล็ดลับนี้:
ไม่แนะนำ
[a] + b - 0
ตัวอย่าง:
let output = [5] + 6 - 0;
console.log(output); // 56
console.log(typeof output); // number
เพื่อเพิ่มคำตอบทั้งหมดข้างต้นฉันต้องการแบ่งปันตรรกะพื้นหลัง:
Plusเป็นตัวดำเนินการเพิ่มเติมที่ใช้สำหรับการต่อสายอักขระ เมื่อเราต้องการต่อตัวเลข ควรเป็นความเข้าใจที่เราต้องการต่อสตริงเนื่องจากการต่อตัวเลขไม่ได้ทำให้เกิดกรณีการใช้งานที่ถูกต้องสำหรับฉัน
เราสามารถบรรลุได้หลายวิธี
ผ่านการแปลงประเภท
let a = 5;
a.toString()+5 // Output 55 type "string"
สิ่งนี้จะทำงานและทำการแปลงประเภทในพื้นหลัง
5 +""+ 5 // Output 55 type "string"
หากคุณมุ่งมั่นที่จะเชื่อมสตริงสองสตริงเข้าด้วยกันและชนิดของเอาต์พุตควรเป็น int parseInt () จะทำงานที่นี่
parseInt(5 +""+ 5) //Output 55 Type "number"