Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

แปลงอาร์เรย์ตัวเลขไบนารีเป็นจำนวนเต็มที่ตรงกันใน JavaScript

สมมติว่าเรามีอาร์เรย์ของตัวเลขที่มี 0 และ 1:

const arr = [0, 1, 0, 1];

เราต้องเขียนฟังก์ชันอาร์เรย์ toBinary() ที่คืนค่าไบนารีที่ตรงกันสำหรับอาร์เรย์ที่ใช้

ตัวอย่างเช่น - ถ้าอาร์เรย์คือ:

const arr = [1, 0, 1, 1];

ผลลัพธ์ควรเป็น 11 เพราะการแทนค่าทศนิยมของไบนารี 1011 คือ 11

มาเขียนโค้ดสำหรับฟังก์ชันนี้กัน

วิธีที่ 1: ใช้เมธอดไลบรารี

ใน JavaScript มีเมธอด parseInt() ที่รับสองอาร์กิวเมนต์ ตัวแรกคือสตริง และตัวที่สองคือตัวเลขที่แทนฐานเฉพาะ เช่น 10 สำหรับฐานสิบ 2 สำหรับไบนารี ฟังก์ชันนี้แปลงสตริงและคืนค่าจำนวนเต็มของฐานที่ระบุ (radix)

ในกรณีของเรา การแปลงอาร์เรย์ไบนารีเป็นทศนิยม เราสามารถใช้ parseInt() ได้แบบนี้:

const arr = [1, 0, 1, 1];
const parseArray = arr => {
  const binaryString = arr.join("");
  return parseInt(binaryString, 2);
};
console.log(parseArray(arr));

วิธีที่ 2: Reduce อาร์เรย์

ในวิธีนี้เราวนลูปผ่านอาร์เรย์ไบนารีและสร้างทศนิยมตามตัวเลขไบนารีที่ตรงกัน เราจะใช้ left shift operator (<<) เพื่อขยับค่าสะสมไปซ้าย 1 บิตทุกครั้ง และคืนค่า bitwise OR (|) ของค่าที่ขยับแล้วและค่าปัจจุบัน

โค้ดสำหรับวิธีนี้ใช้ Bitwise Operator:

ตัวอย่างโค้ด

const arr = [1, 0, 1, 1];

const parseArray = arr => {
  return arr.reduce((acc, val) => {
    return (acc << 1) | val;
  });
};

console.log(parseArray(arr));

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็นดังนี้:

11