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

คืนค่าตัวเลขซ้ำแรกจากอาร์เรย์ใน JavaScript

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

มาแก้ปัญหานี้ เราจะใช้ 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