Rumah >hujung hadapan web >tutorial js >Bagaimanakah Saya Boleh Mencari Nilai Pendua dengan Cekap dalam Tatasusunan JavaScript?

Bagaimanakah Saya Boleh Mencari Nilai Pendua dengan Cekap dalam Tatasusunan JavaScript?

Susan Sarandon
Susan Sarandonasal
2024-12-15 15:20:23367semak imbas

How Can I Efficiently Find Duplicate Values in a JavaScript Array?

Mencari Nilai Bukan Unik dalam Tatasusunan

Mengenal pasti nilai pendua dalam tatasusunan JavaScript ialah tugas biasa. Walaupun melelaran melalui tatasusunan dan membandingkan setiap elemen dengan yang lain mungkin kelihatan seperti pendekatan yang mudah, ia boleh menjadi tidak cekap, terutamanya untuk tatasusunan yang besar.

Satu penyelesaian yang dioptimumkan melibatkan mengisih tatasusunan terlebih dahulu. Langkah ini mengurangkan kerumitan daripada O(n^2) kepada kurang daripada O(n^2) dengan mengumpulkan elemen yang serupa bersama-sama.

Setelah tatasusunan diisih, anda boleh mengulanginya dan menyemak sama ada elemen semasa sepadan dengan elemen seterusnya atau sebelumnya. Jika ia adalah sama, nilai tersebut dianggap sebagai pendua dan boleh ditambahkan pada senarai hasil.

const findDuplicates = (arr) => {
  let sorted_arr = arr.slice().sort();
  let results = [];
  for (let i = 0; i < sorted_arr.length - 1; i++) {
    if (sorted_arr[i + 1] == sorted_arr[i]) {
      results.push(sorted_arr[i]);
    }
  }
  return results;
};

Sebagai contoh, diberikan tatasusunan seperti [9, 9, 111, 2, 3, 4, 4, 5, 7], pendekatan ini akan mengenal pasti dan mengembalikan nilai pendua dengan cekap: [9, 4].

Dengan memanfaatkan pengisihan dan membandingkan elemen bersebelahan, penyelesaian ini menawarkan kaedah yang cekap masa untuk mencari nilai bukan unik dalam tatasusunan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencari Nilai Pendua dengan Cekap dalam Tatasusunan JavaScript?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn