Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

ทำให้อาร์เรย์ไม่ซ้ำกันใน JavaScript


ปัญหา

เราจำเป็นต้องเขียนฟังก์ชัน JavaScript ที่รับอาร์เรย์ของตัวเลข arr เป็นอาร์กิวเมนต์แรกและอาร์กิวเมนต์เดียว

การย้ายประกอบด้วยการเลือก arr[i] ใดๆ และเพิ่มขึ้นทีละ 1 ฟังก์ชันของเราควรจะส่งคืนจำนวนการเคลื่อนไหวน้อยที่สุดเพื่อทำให้ทุกค่าในอาร์เรย์ arr ไม่ซ้ำกัน

ตัวอย่างเช่น หากอินพุตของฟังก์ชันคือ −

const arr = [12, 15, 7, 15];

จากนั้นผลลัพธ์ควรเป็น −

const output = 1;

คำอธิบายผลลัพธ์

เพราะหากเราเพิ่ม 15 ถึง 16 ใดๆ อาร์เรย์จะประกอบด้วยองค์ประกอบที่ไม่ซ้ำกันทั้งหมด

ตัวอย่าง

รหัสสำหรับสิ่งนี้จะเป็น −

const arr = [12, 15, 7, 15];
const makeUnique = (arr = []) => {
   arr.sort((a, b) => a - b);
   let count = 0;
   for (let i = 1; i < arr.length; i++) {
      if (arr[i] <= arr[i - 1]) {
         const temp = arr[i]
         arr[i] = arr[i - 1] + 1
         count += arr[i] - temp
      };
   };
   return count;
};
console.log(makeUnique(arr));

ผลลัพธ์

และผลลัพธ์ในคอนโซลจะเป็น −

1