Set 2.has(x))))" untuk mendapatkan set perbezaan; 3. Tentukan perbezaan Sama ada tatasusunan set adalah tatasusunan kosong, jika ya, kedua-dua tatasusunan adalah sama, jika tidak, mereka tidak sama."/> Set 2.has(x))))" untuk mendapatkan set perbezaan; 3. Tentukan perbezaan Sama ada tatasusunan set adalah tatasusunan kosong, jika ya, kedua-dua tatasusunan adalah sama, jika tidak, mereka tidak sama.">
Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Bagaimana untuk menentukan sama ada dua tatasusunan adalah sama dalam es6
Langkah: 1. Gunakan atribut panjang untuk mendapatkan panjang dua tatasusunan, dan tentukan sama ada kedua-dua panjang itu adalah "tatasusunan 1. panjang == tatasusunan 2." Jika panjang adalah sama, gunakan " Set baru (tatasusunan)" menukar kedua-dua tatasusunan kepada jenis set dan menggunakan "Array.from(new Set([...Set 1].filter(x=>Set 2.has( x))))" untuk mendapatkan set Perbezaan; 3. Tentukan sama ada tatasusunan set perbezaan ialah tatasusunan kosong. Jika ya, kedua-dua tatasusunan adalah sama, jika tidak ia tidak sama.
Persekitaran pengendalian tutorial ini: sistem Windows 7, ECMAScript versi 6, komputer Dell G3.
Untuk menentukan sama ada dua tatasusunan adalah sama, anda boleh menukar idea untuk menentukan sama ada panjang dua tatasusunan adalah sama dan sama ada set perbezaan (mengandungi elemen berbeza) kosong.
Idea pelaksanaan:
Semak sama ada panjang dua tatasusunan adalah sama
Jika panjangnya adalah sama, Kemudian tentukan sama ada set perbezaan dua tatasusunan kosong
Jika set perbezaan kosong, kedua-dua tatasusunan adalah sama (kerana tiada unsur yang berbeza)
Jika set perbezaan tidak kosong, kedua-dua tatasusunan tidak sama (kerana terdapat elemen yang berbeza)
Penjelasan: Jika tatasusunan mempunyai nilai pendua, Panjang tatasusunan adalah berbeza, tetapi tiada unsur yang berbeza (set perbezaan adalah kosong)
var a=[1, 2, 3]; var b=[1,2,3,1,3];
Tetapi dua tatasusunan sedemikian tidak boleh sama, jadi tatasusunan perlu dinilai dahulu Adakah panjangnya sama?
Langkah pelaksanaan:
Langkah 1. Gunakan atribut panjang untuk mendapatkan panjang dua tatasusunan masing-masing, dan tentukan sama ada kedua-dua panjang adalah sama.
Setiap tatasusunan mempunyai atribut panjang, yang boleh digunakan untuk mengembalikan panjang maksimum tatasusunan, iaitu nilainya bersamaan dengan nilai subskrip maksimum tambah 1.
var a=[1, 2, 3]; var b=[1, 2, 3]; console.log(a); console.log(b); if(a.length==b.length){ console.log("两数组的长度相等"); }else{ console.log("两数组的长度不相等"); }
Langkah 2: Jika kedua-dua panjang adalah sama, gunakan kaedah has(), filter(), dan from() untuk mendapatkan perbezaan antara dua tatasusunan
has() ialah kaedah set objek, jadi jika anda ingin menggunakan kaedah has(), anda perlu menukar tatasusunan untuk menetapkan jenis koleksi dahulu.
newA = new Set(a); newB = new Set(b);
Kaedah has() bagi objek yang ditetapkan bekerjasama dengan penapis() tatasusunan untuk mencari persilangan dua tatasusunan, tetapi elemen persilangan akan dimasukkan dalam koleksi set dan dikembalikan, menjadikan sukar untuk melakukan perbandingan nol; Oleh itu, anda perlu menggunakan kaedah Array.from untuk menukar koleksi kepada jenis tatasusunan.
let differenceABSet = Array.from(new Set([...newA].filter(x => !newB.has(x))));
Penjelasan:
Kaedah Array.from digunakan untuk menukar dua jenis objek kepada tatasusunan sebenar: serupa kepada tatasusunan Objek (objek seperti tatasusunan) dan objek boleh dilalui (boleh lelar) (termasuk Set dan Peta struktur data baharu ES6).
Langkah 3: Tentukan sama ada tatasusunan set perbezaan ialah tatasusunan kosong
Jika tatasusunan set perbezaan ialah tatasusunan kosong, maka dua tatasusunan adalah sama
Jika tatasusunan perbezaan bukan tatasusunan kosong, kedua-dua tatasusunan itu tidak sama
if(differenceABSet.length==0){ console.log("两数组相等"); }else{ console.log("两数组不相等"); }
Kod pelaksanaan lengkap (dirangkumkan sebagai fungsi)
function f(a, b) { newA = new Set(a); newB = new Set(b); if (a.length == b.length) { let differenceABSet = Array.from(new Set([...newA].filter(x => !newB.has(x)))); console.log("两数组差集:"); console.log(differenceABSet); if (differenceABSet.length == 0) { console.log("两数组相等"); } else { console.log("两数组不相等"); } } else { console.log("两数组不相等"); } }
Contoh 1: Semak sama ada dua fungsi berikut adalah sama
var a = [1, 2, 3]; var b = [1, 2, 3,3]; console.log(a); console.log(b); f(a, b);
Contoh 2: Semak sama ada dua fungsi berikut adalah sama
var a = [1, 2, 3]; var b = [1, 2, 4]; console.log(a); console.log(b); f(a, b);
Penjelasan: Elemen dalam set perbezaan adalah daripada tatasusunan yang dibandingkan (Tidak. Diambil daripada tatasusunan a
).
[Cadangan berkaitan: tutorial video javascript, Video pengaturcaraan]
Atas ialah kandungan terperinci Bagaimana untuk menentukan sama ada dua tatasusunan adalah sama dalam es6. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!