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

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


ปัญหา

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

การเคลื่อนที่ (move) ประกอบด้วยการเลือก 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