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!