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

ส่งคืนหมายเลขที่ซ้ำกันครั้งแรกจากอาร์เรย์ใน JavaScript


เราจำเป็นต้องเขียนฟังก์ชันที่ส่งคืนดัชนีขององค์ประกอบแรกที่ปรากฏอย่างน้อยสองครั้งในอาร์เรย์ หากไม่มีองค์ประกอบใดปรากฏขึ้นมากกว่าหนึ่งครั้ง เราต้องคืนค่า -1 เงื่อนไขคือเราต้องทำสิ่งนี้ในพื้นที่คงที่ (เช่น โดยไม่ต้องใช้หน่วยความจำเพิ่มเติม)

มาคิดวิธีแก้ปัญหานี้กัน เราจะใช้ for loop เพื่อวนซ้ำในอาร์เรย์และใช้เมธอด Array.prototype.lastIndexOf() เพื่อตรวจสอบรายการซ้ำ

ตัวอย่าง

const firstDuplicate = arr => {
   for(let i = 0; i < arr.length; i++){
      if(arr.lastIndexOf(arr[i]) !== i){
         return i;
      };
   };
   return -1;
}
console.log(firstDuplicate([3, 5, 6, 8, 5, 3])); // 0
console.log(firstDuplicate([0, 1, 2, 3, 4, 4, 5])); // 4
console.log(firstDuplicate([0, 1, 1, 2, 3, 4, 4, 5])); // 1
console.log(firstDuplicate([0, 1, 2, 3, 4, 9, 5])); // -1

ผลลัพธ์

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

0
4
1
-1