1. Pengantar singkat untuk antrian dan tumpukan
1.1. Konsep dasar antrian
Antrian: Ini adalah koleksi yang mendukung pertama-dalam-pertama (FIFO), yaitu data yang dimasukkan pertama kali diambil terlebih dahulu!
Seperti yang ditunjukkan pada gambar di bawah ini:
1.2. Konsep dasar tumpukan
Stack: Ini adalah koleksi yang mendukung terakhir-pertama (LIFO), yaitu data yang dimasukkan kemudian diambil terlebih dahulu!
Seperti yang ditunjukkan pada gambar di bawah ini:
2. Menerapkan antrian dan tumpukan di JavaScript
Dalam JavaScript, antrian dan array terutama diimplementasikan melalui array. Metode berikut disediakan dalam array JS untuk memudahkan kami menerapkan antrian dan tumpukan:
• Shift: Hapus elemen pertama dari array dan kembalikan nilai elemen ini.
• Unshift: Tambahkan satu atau lebih elemen di awal array dan kembalikan panjang baru
• Dorong: tambahkan elemen di ujung tengah dan kembalikan panjang baru
• POP: Hapus elemen terakhir dari array dan kembalikan nilai elemen ini.
2.1. Menerapkan antrian
<type skrip = "text/javascript"> // Buat array untuk mensimulasikan antrian var a = array baru (); console.log (a); // unshift: tambahkan satu atau lebih elemen di awal array dan kembalikan panjang baru console.log ("enter"); a.unshift () console.log (a); // -----> a.unshift (); console.log (a); // ----->, a.unshift (); console.log (a); //-- ---->, a.unshift (); console.log (a); // ----->, a.unshift (); console.log (a); // ----> ,, a.unshift (); console.log (a); // ----> ,,, konsol .log ("Keluar, pertama di, pertama keluar"); console.log (a); // pop: hapus elemen terakhir dari array dan kembalikan nilai elemen ini a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); a.pop (); // -----> Console.log (a); a.pop (); //- ---> Console.log (a); aEfek output pada konsol Google Browser ditunjukkan pada gambar di bawah ini:
2.2. Menerapkan tumpukan
<type skrip = "Text/JavaScript"> // Buat array untuk mensimulasikan stack var a = array baru (); console.log (a); // dorong: tambahkan satu atau lebih elemen di akhir array dan kembalikan panjang baru console.log ("stack"); a.push () console.log (a); // -----> a.push (); console.log (a); // ----->, a.push (); console.log (a); // ---- ->, a.push (); console.log (a); // ----->, a.push (); console.log (a); // ----> ,, a.push (); console.log (a); // ----> ,,, console.log (" keluar tumpukan, pertama keluar "); console.log (a); // pop: hapus elemen terakhir dari array dan kembalikan nilai elemen ini a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); a.pop (); // -----> console.log (a); a.pop (); // -----> Console.log (a); a.pop (); //- ---> Console.log (a); aEfek output pada konsol Google Browser ditunjukkan pada gambar di bawah ini:
2.3. Pengujian Kinerja Metode Push dan Metode Tidak Bergerak
Metode dorongan dan tidak henti array dapat menambah elemen ke array saat ini. Perbedaannya adalah bahwa dorongan ditambahkan di akhir, sementara unshift ditambahkan di awal. Dari prinsipnya, kita dapat mengetahui bahwa efisiensi Unshift relatif rendah. Alasannya adalah bahwa setiap kali menambahkan elemen, ia menggerakkan elemen yang ada ke bawah satu posisi. Tapi seberapa besar perbedaan efisiensi? Mari kita ambil tes sederhana di bawah ini.
<script type = "text/javascript">/*Penjelasan dari penjelasan trik "var s =+newDate ();" Dalam kode adalah sebagai berikut: =+Operator ini tidak ada;+setara dengan .valueof ();+tanggal baru () setara dengan tanggal baru (). Nilai () // hasilnya mengembalikan milidetik dari waktu saat ini, peringatan (+Tanggal baru () (WART (+Tanggal baru); var S = Tanggal baru () (S.Va) (S.Va) (S.Va, (); ]; var starttime = +tanggal baru (); //+tanggal baru () setara dengan tanggal baru (). valueOf (), mengembalikan milidetik dari waktu saat ini // tes kinerja dorong untuk (var i =; i <; i ++) {arr.push (i); } var endtime =+new date (); console.log ("Butuh waktu untuk memanggil metode push untuk menambahkan elemen ke array"+(endtime-starttime)+"ms"); startTime = +Tanggal baru (); arr = []; // tes kinerja unshift untuk (var i =; i <; i ++) {arr.unshift (i); } endtime =+tanggal baru (); console.log ("Butuh waktu untuk memanggil metode unshift untuk menambahkan elemen ke array"+(endtime-starttime)+"ms"); </script>Kode ini masing -masing melakukan 100.000 operasi dorongan dan unshift, dan menjalankannya sekali di Google Browser. Hasilnya ditunjukkan pada gambar di bawah ini:
Dapat dilihat bahwa Unshift sekitar 100 kali lebih lambat dari dorongan! Oleh karena itu, Anda harus menggunakan tidak terhindar dengan hati -hati dalam kehidupan sehari -hari, terutama untuk array besar. Jika Anda harus mencapai efek unshift, Anda dapat menggunakan metode terbalik Array, yang dapat membalikkan array. Pertama -tama tambahkan elemen yang akan dimasukkan ke dalam array dengan dorongan, dan kemudian jalankan kembali lagi untuk mencapai efek tidak henti. Misalnya:
<type skrip = "text/javaScript"> // Buat array untuk mensimulasikan tumpukan var a = array baru (); // Gunakan metode push untuk menambahkan elemen a.push () a.push (); a.push (); a.push (); console.log ("orde elemen dalam array sebelum array adalah reversed"); console (console); Metode yang disebut Reverse yang dapat membalikkan array. Pertama tambahkan elemen yang akan dimasukkan ke dalam array dengan dorongan, dan kemudian lakukan terbalik lagi, dan efek unshift dicapai a.reverse (); // Gunakan metode terbalik untuk membalikkan konsol array.Efek output pada konsol Google Browser ditunjukkan pada gambar di bawah ini:
Dilihat dari hasil berjalan, urutan elemen array telah dibalik.
2.4. Pengujian kinerja metode terbalik
Apa kinerja terbalik? Mari kita mengujinya lagi:
<script type = "text/javascript"> var arr = [], s = +tanggal baru; untuk (var i =; i <; i ++) {arr.push (i); } // Panggilan metode terbalik untuk membalikkan urutan elemen di array arr.reverse (); Console.log ("Call Reverse Method untuk membalikkan urutan elemen dalam array:"+(+tanggal baru - s)+"msec"); </script>Efek output pada konsol Google Browser ditunjukkan pada gambar di bawah ini:
Dari efek berjalan, kita dapat melihat bahwa metode terbalik memiliki kinerja yang sangat tinggi dan dapat digunakan dengan percaya diri.
Di atas adalah ringkasan penerapan antrian dan tumpukan melalui array di JavaScript, dan saya hanya menguji keuntungan kinerja dan kerugian dari dorongan, tidak bergetar, dan terbalik dalam mengoperasikan array besar.
Di atas adalah antrian dan tumpukan dalam struktur data implementasi array JavaScript yang diperkenalkan oleh editor. Saya harap ini akan membantu semua orang. Jika Anda memiliki pertanyaan, silakan tinggalkan saya pesan dan editor akan membalas semua orang tepat waktu. Terima kasih banyak atas dukungan Anda ke situs web Wulin.com!