Rumah > hujung hadapan web > tutorial js > 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
Lepaskan: 2024-10-21 10:49:02
asal
1064 orang telah melayarinya

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]
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php
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