Mengendalikan Pendua dalam Tatasusunan JavaScript: Teknik dan Amalan Terbaik

Linda Hamilton
Lepaskan: 2024-10-23 17:54:30
asal
367 orang telah melayarinya

Handling Duplicates in JavaScript Arrays: Techniques and Best Practices

Dalam pembangunan JavaScript, mengurus data dengan cekap adalah penting. Satu cabaran biasa yang dihadapi oleh pembangun ialah mengendalikan nilai pendua dalam tatasusunan. Artikel ini akan meneroka kaedah yang berbeza untuk mengenal pasti dan menghapuskan pendua, dengan tumpuan pada tatasusunan mudah dan tatasusunan objek.

Memahami Pendua dalam Tatasusunan

Apabila bekerja dengan tatasusunan, pendua boleh membawa kepada hasil yang salah, pemprosesan yang tidak cekap atau tingkah laku yang tidak dijangka dalam aplikasi. Oleh itu, adalah penting untuk melaksanakan strategi yang mantap untuk menapis pendua dengan berkesan.

1. Mengalih keluar Pendua daripada Tatasusunan Mudah

Mari kita mulakan dengan contoh yang mudah. Katakan anda mempunyai susunan nombor yang mengandungi pendua:

let numberArray = [1, 2, 3, 3, 4, 5, 6, 5, 7, 10, 9, 9];
let uniqueNumbers = [];

for (let i = 0; i < numberArray.length; i++) {
  let isDuplicate = false;

  for (let j = 0; j < uniqueNumbers.length; j++) {
    if (numberArray[i] === uniqueNumbers[j]) {
      isDuplicate = true;
      break;
    }
  }

  if (!isDuplicate) {
    uniqueNumbers.push(numberArray[i]);
  }
}

console.log(uniqueNumbers); // Output: [1, 2, 3, 4, 5, 6, 7, 10, 9]
Salin selepas log masuk
Salin selepas log masuk

Penjelasan:

  • Gelung Luar: Berulang melalui setiap elemen dalam tatasusunan asal (NumberArray).
  • Gelung Dalam: Menyemak sama ada elemen semasa sudah wujud dalam tatasusunan uniqueNumbers. Jika ya, ia menetapkan bendera isDuplicate kepada benar dan keluar dari gelung dalam.
  • Syarat: Jika elemen itu bukan pendua, ia akan ditambahkan pada uniqueNumbers.

Walaupun pendekatan ini berfungsi, ia tidak optimum untuk set data yang lebih besar kerana kerumitan masa O(n²), yang boleh memperlahankan prestasi.

2. Mengendalikan Pendua dalam Tatasusunan Objek

Apabila berurusan dengan tatasusunan objek, anda mungkin mahu mengalih keluar pendua berdasarkan sifat tertentu, seperti medan id. Di bawah ialah contoh yang menggambarkan cara untuk mencapai ini:

let userArray = [
  { id: 1, name: 'John' },
  { id: 2, name: 'Jane' },
  { id: 3, name: 'Bob' },
  { id: 3, name: 'Bob' }, // Duplicate
  { id: 4, name: 'Alice' },
  { id: 5, name: 'Eve' },
  { id: 5, name: 'Eve' }, // Duplicate
  { id: 6, name: 'Charlie' },
  { id: 7, name: 'David' },
  { id: 10, name: 'Edward' },
  { id: 9, name: 'Frank' },
  { id: 9, name: 'Frank' } // Duplicate
];

let uniqueUsers = [];

for (let i = 0; i < userArray.length; i++) {
  let isDuplicate = false;

  // Compare based on the 'id' property
  for (let j = 0; j < uniqueUsers.length; j++) {
    if (userArray[i].id === uniqueUsers[j].id) {
      isDuplicate = true;
      break;
    }
  }

  // If it's not a duplicate, add the object to the unique array
  if (!isDuplicate) {
    uniqueUsers.push(userArray[i]);
  }
}

console.log(uniqueUsers);
Salin selepas log masuk

Penjelasan:

  • Kod ini mengikut logik yang serupa dengan contoh sebelumnya, tetapi ia menyemak pendua berdasarkan sifat id objek dalam tatasusunan.

3. Pendekatan Terbaik untuk Mengeluarkan Pendua

Untuk set data yang lebih besar, pendekatan yang lebih cekap ialah menggunakan peta atau objek untuk menjejaki pengecam yang dilihat. Berikut ialah contoh yang diperhalusi:

let numberArray = [1, 2, 3, 3, 4, 5, 6, 5, 7, 10, 9, 9];
let uniqueNumbers = [];

for (let i = 0; i < numberArray.length; i++) {
  let isDuplicate = false;

  for (let j = 0; j < uniqueNumbers.length; j++) {
    if (numberArray[i] === uniqueNumbers[j]) {
      isDuplicate = true;
      break;
    }
  }

  if (!isDuplicate) {
    uniqueNumbers.push(numberArray[i]);
  }
}

console.log(uniqueNumbers); // Output: [1, 2, 3, 4, 5, 6, 7, 10, 9]
Salin selepas log masuk
Salin selepas log masuk

Penjelasan:

  • seenIds: Objek yang menjejaki ID yang telah ditemui.
  • Kecekapan: Kaedah ini mempunyai kerumitan masa O(n), menjadikannya lebih sesuai untuk set data yang besar kerana ia mengurangkan bilangan perbandingan yang diperlukan.

Kesimpulan

Mengendalikan pendua dalam tatasusunan ialah kemahiran penting untuk mana-mana pembangun JavaScript. Dengan menggunakan kaedah yang dibincangkan dalam artikel ini—bermula daripada lelaran asas kepada penyelesaian optimum menggunakan peta atau objek—anda boleh mengurus data dengan cekap dan memastikan aplikasi anda berjalan lancar.

Dengan memahami struktur data anda dan memilih teknik yang betul, anda boleh meningkatkan prestasi dan kebolehselenggaraan dalam projek anda. Pendekatan optimum, khususnya, membolehkan skalabiliti, yang penting apabila set data anda berkembang.

Jangan ragu untuk menyesuaikan contoh ini untuk memenuhi keperluan aplikasi anda dan pastikan pangkalan kod anda bersih dan cekap!

Atas ialah kandungan terperinci Mengendalikan Pendua dalam Tatasusunan JavaScript: Teknik dan Amalan Terbaik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan