Rumah  >  Artikel  >  hujung hadapan web  >  Apakah Teknik Cekap dan Elegan untuk Pengiraan Perbezaan Set dalam Javascript?

Apakah Teknik Cekap dan Elegan untuk Pengiraan Perbezaan Set dalam Javascript?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-21 10:49:02966semak imbas

What are the Efficient and Elegant Techniques for Set Difference Computation in Javascript?

Pengiraan Perbezaan Set yang Cekap dan Elegan dalam Javascript

Apabila berurusan dengan operasi set dalam Javascript, mencari cara yang cekap dan elegan untuk mengira set perbezaan (A - B) adalah cabaran biasa. Mari kita terokai beberapa kaedah.

Pendekatan Fungsi Asli

Satu penyelesaian mudah ialah menggunakan fungsi Javascript asli:

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

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

console.log(diff); // [2]

Di sini, fungsi penapis berulang ke atas tatasusunan A, menyemak sama ada setiap elemen hadir dalam B menggunakan operasi indexOf. Jika tidak dijumpai, elemen itu akan ditambahkan pada perbezaan tatasusunan perbezaan.

Penyatuan dan Helah Isih

Pendekatan lain mengeksploitasikan penggabungan Javascript dan kelakuan isihan:

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

A = A.concat(B).sort().filter((v, i, a) => a[i] !== a[i + 1]);

console.log(A); // [2, 7]</code>

Dengan menggabungkan dan mengisih kedua-dua tatasusunan, kami mencapai senarai tertib elemen unik. Menapis pendua berturut-turut memberikan kita perbezaan yang ditetapkan.

Pendekatan Berasaskan Objek

Memanfaatkan objek seperti peta cincang untuk menyimpan elemen unik daripada kedua-dua tatasusunan menawarkan penyelesaian yang cekap:

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

var setA = {};
A.forEach(function(x) { setA[x] = true; });

var setDiff = {};
B.forEach(function(x) { setDiff[x] = true; });

Object.keys(setA).forEach(function(x) {
  if (!setDiff[x]) {
    setDiff[x] = true;
  }
});

var diff = Object.keys(setDiff);

console.log(diff); // [2, 7]</code>

Pendekatan ini menggunakan objek sebagai peta cincang untuk menjejak elemen dalam kedua-dua tatasusunan dan mengira perbezaannya dengan cekap.

Kaedah ini memberikan pertukaran yang berbeza dari segi kecekapan dan keanggunan. Pilih yang paling sesuai dengan keperluan khusus anda.

Atas ialah kandungan terperinci Apakah Teknik Cekap dan Elegan untuk Pengiraan Perbezaan Set dalam 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