สมมติว่า เรามีอาร์เรย์ของตัวเลขที่มี 0 และ 1 −
const arr = [0, 1, 0, 1];
เราจำเป็นต้องเขียนฟังก์ชัน Array toBinary() ที่คืนค่าไบนารีที่สอดคล้องกันสำหรับอาร์เรย์ที่ใช้
ตัวอย่างเช่น − หากอาร์เรย์เป็น −
const arr = [1, 0, 1, 1];
ผลลัพธ์ควรเป็น 11 เนื่องจากการแสดงทศนิยมของไบนารี 1011 คือ 11
ดังนั้น เรามาเขียนโค้ดสำหรับฟังก์ชันนี้กัน
วิธีที่ 1:การใช้วิธีการของห้องสมุด
ใน JavaScript มีเมธอด parseInt() ซึ่งรับสองอาร์กิวเมนต์ อันแรกคือสตริง และตัวที่สองเป็นตัวเลขที่แทนฐานเฉพาะ เช่น 10 สำหรับฐานทศนิยม 2 สำหรับไบนารี ฟังก์ชันนี้จะแยกวิเคราะห์อาร์กิวเมนต์สตริงและคืนค่าจำนวนเต็ม ของฐานที่กำหนด ( ฐาน)
ในกรณีของเรา ในการแปลงอาร์เรย์ของไบนารีเป็นทศนิยม เราสามารถใช้ฟังก์ชัน parseInt() ได้ดังนี้ -
const arr = [1, 0, 1, 1];
const parseArray = arr => {
const binaryString = arr.join("");
return parseInt(binaryString, 2);
};
console.log(parseArray(arr)); วิธีที่ 2:การลดอาร์เรย์
ในวิธีนี้ เราวนซ้ำอาร์เรย์ไบนารีและสร้างทศนิยมตามเลขฐานสองที่สอดคล้องกัน เราจะใช้ตัวดำเนินการ shift ซ้าย (<<) เพื่อเลื่อนค่าสะสมไปทางซ้ายทีละหนึ่งบิตทุกครั้งและคืนค่าระดับบิต OR (|) ของค่าสะสมที่เลื่อนและค่าปัจจุบัน
รหัสสำหรับสิ่งนี้โดยใช้ตัวดำเนินการ Bitwise -
ตัวอย่าง
const arr = [1, 0, 1, 1];
const parseArray = arr => {
return arr.reduce((acc, val) => {
return (acc << 1) | val;
});
};
console.log(parseArray(arr)); ผลลัพธ์
ผลลัพธ์ในคอนโซลจะเป็น -
11