สมมติว่า เรามีอาร์เรย์ของตัวเลขที่มี 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