Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana Mengira Set Perbezaan dengan Cekap dalam Tatasusunan Javascript?

Bagaimana Mengira Set Perbezaan dengan Cekap dalam Tatasusunan Javascript?

Patricia Arquette
Patricia Arquetteasal
2024-10-21 11:22:29829semak imbas

How to Compute Set Difference Efficiently in Javascript Arrays?

Pengiraan Perbezaan Set yang Cekap dengan Tatasusunan Javascript

Mengira perbezaan set antara dua tatasusunan boleh menjadi operasi penting dalam manipulasi data dan teori set. Dalam Javascript, di mana tatasusunan berfungsi sebagai struktur data utama, mencari cara yang cekap dan elegan untuk melaksanakan tugas ini adalah penting.

Satu pendekatan mudah ialah memanfaatkan fungsi tatasusunan asli.penapis(), seperti yang ditunjukkan di bawah:

<code class="js">var A = [1, 2, 3, 4];
var B = [1, 3, 4, 7];

var diff = A.filter(function(x) {
  return B.indexOf(x) < 0;
});</code>

Pendekatan ini menggunakan fungsi indexOf() untuk menentukan sama ada elemen daripada A wujud dalam B. Jika tidak, elemen itu ditambahkan pada tatasusunan perbezaan yang terhasil. Walaupun mudah, ia mempunyai kelemahan untuk melakukan carian linear dalam tatasusunan B untuk setiap elemen A, yang berpotensi menghasilkan kerumitan masa O(n^2).

Untuk tatasusunan yang lebih besar, prestasi boleh dipertingkatkan dengan menggunakan algoritma berikut:

  1. Buat set S yang mengandungi semua elemen daripada B.
  2. Lelaran melalui A dan tambahkan mana-mana elemen yang tidak ditemui dalam S kepada perbezaan tatasusunan perbezaan.
<code class="js">var s = new Set(B);
var diff = A.filter(function(x) {
  return !s.has(x);
});</code>

Menggunakan set untuk S memastikan ujian keahlian dilakukan dalam masa yang tetap, menghasilkan kerumitan masa keseluruhan O(n).

Atas ialah kandungan terperinci Bagaimana Mengira Set Perbezaan 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