KomputerPengaturcaraan

JavaScript-array dan penciptaannya. Semua tentang tatasusunan JavaScript

Dalam artikel ini kita akan melihat JavaScript-array, komponennya. JavaScript adalah bahasa senario berorientasikan yang sempurna direka untuk pengaturcaraan. Malah, ia melaksanakan bahasa ECMAScript (standard ECMA-262).

Of JavaScript? Ia digunakan sebagai bahasa terbenam untuk menentukan jalan program untuk permohonan itu tertakluk. Ia boleh didapati dalam pelayar: ia digunakan di sana sebagai bahasa skrip yang memberikan laman web interaktif.

Ciri-ciri seni bina utama dalam produk ini terdapat menaip dinamik dan lemah, memori ideal avtoupravlenie fungsi pengaturcaraan yang adalah objek pelepasan pertama.

Sebenarnya, dalam JavaScript dipengaruhi alasan yang berbeza, kerana pembangunan itu akan mewujudkan bahasa yang sama dengan Jawa, tetapi mudah untuk digunakan oleh pengaturcara. Dengan cara ini, bahasa JavaScript tidak memiliki mana-mana syarikat atau organisasi yang menjadikan ia berbeza daripada beberapa gaya pengaturcaraan yang digunakan oleh pembangun laman web.

Ia harus diperhatikan bahawa JavaScript - tanda dagangan berdaftar Oracle Corporation Group.

Apa yang array?

Dipanggil pelbagai jenis data, yang menyimpan nilai bernombor. Setiap nilai tersebut dirujuk sebagai komponen array dan angka yang mengikat komponen, yang dipanggil indeks. JavaScript-pelbagai untyped. Ini bermakna bahawa bahagian pepejal boleh mempunyai apa sahaja jenis, dengan bahagian-bahagian yang berlainan dimiliki oleh lokasi yang sama, mempunyai jenis yang berbeza.

Di samping itu, JavaScript-array adalah dinamik, dan dikatakan bahawa saiz yang tetap tidak perlu diisytiharkan. Selepas menambah bahagian-bahagian baru pada bila-bila.

pengeluaran kayu

Menggunakan bahasa JavaScript untuk mewujudkan array agak sukar. Terdapat dua kaedah untuk ini. Yang pertama melibatkan pengeluaran pelbagai menggunakan literal - kurungan persegi, di dalam yang diletakkan senarai barangan, dibahagikan dengan koma.

  • var = kosong []; // pelbagai kosong;
  • numers var = [4, 1, 2, 5]; // pelbagai dengan lima komponen digital;
  • var diff = [1.5, palsu, «teks"]; // pelbagai dengan tiga elemen jenis yang berbeza.

Sebagai peraturan, ia tidak dikehendaki supaya nilai-nilai yang mudah (baris dan nombor). Ia juga boleh menjadi apa-apa ungkapan lain, sebagai contoh, literals objek, fungsi dan tatasusunan lain.

Cara kedua untuk mewujudkan berjenama mudah adalah untuk memanggil Array (). Untuk menjemput beliau untuk salah satu daripada tiga kaedah:

  • Memanggil pereka tanpa hujah: var b - Array baru (). Ia menyediakan untuk penciptaan pelbagai bersamaan kosong kepada literal kosong [].
  • pereka bentuk telah jelas menyatakan nilai n komponen lokasi: var b = Array baru (1, 3, 5, 8, "talian», benar). Dalam kes ini, pereka bentuk dibentangkan senarai argumen, yang berubah menjadi komponen pelbagai baru. Hujah-hujah yang ditulis untuk array adalah lokasi di mana ditunjukkan.
  • Mentakrifkan skop untuk nilai-nilai lagi memberikan. Ini dilakukan dengan menentukan lokasi pengesanan nombor dalam kurungan: var b = Array baru (5). Kaedah pengesanan melibatkan pelbagai peruntukan amaun yang dikehendaki komponen (setiap yang disenaraikan sebagai undefined) dengan kemungkinan memberikan nilai-nilai dalam pembentangan. Borang ini biasanya digunakan untuk pra-memperuntukkan Javascript-array yang panjang dikenali terlebih dahulu.

Rakaman, membaca dan menambah butiran array

Dapatkan untuk komponen array mungkin melalui operator []. Dengan cara ini, semua komponen dalam JavaScript, bermula dari sifar, bernombor. Untuk mendapatkan unsur-unsur penting, menunjukkan nombor dalam kurungan persegi. Sebagai peraturan umum, barang-barang boleh ditukar. A JavaScript untuk menambah pelbagai, ia adalah mencukupi untuk menetapkan nilai baru.

Perlu diingatkan bahawa dalam JavaScript tatasusunan boleh menyimpan apa-apa bilangan elemen dalam apa jua bentuk.

Panjang array

Oleh itu, kita tahu apa JavaScript. panjang array secara umum adalah satu fenomena yang menarik. Mari kita kaji dengan lebih terperinci. Semua julat dibina menggunakan Array Designer () dan dikesan melalui pelbagai literal mempunyai panjang harta tertentu, yang menarik balik jumlah bilangan elemen membiarkan hidup. Sejak array mungkin tidak menentu butiran (undefined The ditetapkan), ungkapan yang lebih tepat kedengaran begitu: panjang Kualiti adalah sentiasa lebih besar oleh satu daripada bilangan terbesar (index) komponen array. panjang berkualiti dilaraskan secara automatik, tinggal tepat pada kemunculan pelbagai maklumat baru.

Untuk memaparkan komponen akhir array, anda boleh menggunakan harta panjang.

Bahagian terakhir adalah indeks satu kurang daripada saiz array. Selepas detik mula sentiasa dari awal. Oh, JavaScript ini! Panjang array bergantung kepada bilangan yang tepat unsur-unsur. Oleh itu, jika anda tidak tahu berapa banyak perlu ada, tetapi anda perlu beralih kepada unsur akhir array, ia adalah perlu untuk memohon rekod: v.length - 1.

Melelar yang pelbagai bahagian

Selalunya, harta panjang digunakan untuk melelar lebih pelbagai bahagian-bahagian dalam kitaran:

  • buah-buahan var = [ «strawberi", "pic", "epal", "pisang"];
  • untuk (var I = 0; i
  • document.write (buah-buahan [i] + «...»).

Dalam contoh ini ternyata bahawa komponen disusun secara berterusan dan bermula dengan bahagian pertama, yang memegang indeks sifar. Jika ini tidak berlaku, sebelum memanggil setiap elemen array perlu diperiksa jika ia ditakrifkan.

Kitaran ini juga kadang-kadang digunakan untuk memulakan komponen.

Peningkatan dan lokasi pemangkasan

Saya tertanya-tanya bagaimana menggunakan bahasa JavaScript rentetan ke dalam array untuk menambah? Dalam proses bekerja dengan pameran, panjang panjang secara automatik meningkatkan kualiti, itulah sebabnya kita perlu menjaga sendiri. Ia adalah perlu untuk menarik balik satu pun - Panjang harta tidak tersedia untuk baca sahaja, tetapi untuk rekod. Jika nilai atribut panjang berkualiti yang memberikan saiz semasa, array dikurangkan kepada nilai yang telah ditetapkan. Sebarang komponen yang tidak disertakan dalam rangkaian baru indeks, berbaring, dan nilai-nilai mereka hilang, walaupun anda kemudian kembali panjang kembali - nilai yang tidak dapat dipulihkan.

Cukup sekadar membersihkan array sebagai: foo.length = 0.

Jika kualiti panjang larian lebih besar daripada nilai semasa, pada akhir array akan baru, komponen yang tidak dikenali, yang akan meningkatkan kepada saiz yang dikehendaki.

Memotong pelbagai butiran

Pengendali padam menunjukkan komponen array untuk undefined, tetapi ia terus wujud dalam kes ini. Jika anda mahu mengeluarkan unsur JavaScript array supaya bahagian selebihnya beralih ke tempat yang kosong, anda perlu menggunakan salah satu cara untuk meramalkan array. Cara Array.shift () membuang komponen pertama, pop () - menamatkan komponen dan kaedah sambat () - salah satu komponen atau berkisar di mana-mana lokasi.

tatasusunan multidimensi

Ia seolah-olah bahawa kita memahami sedikit, apa JavaScript. tatasusunan dua dimensi - yang perlu dipertimbangkan lagi. Adakah anda ingat bahawa tatasusunan JavaScript boleh mengandungi komponen lain-lain? Ciri ini digunakan untuk pengeluaran tatasusunan pelbagai dimensi. Untuk melawat komponen dalam pelbagai tatasusunan adalah mencukupi untuk memohon kurungan dua kali.

array bersekutu

Sekarang kita belajar bagaimana untuk tanda dagangan menggunakan JavaScript array bersekutu. Untuk melakukan ini kita perlu melihat ke dalam teori: array bersekutu kadang-kadang dipanggil jadual hash. Terima kasih kepada mereka, bukan baris indeks digunakan. Penggunaan struktur tersebut mengingatkan pada penggunaan nama sifat-sifat objek yang mudah, tetapi dalam penjelmaan ini, prestasi kerja dalam format pelbagai. Kerana tidak ada cara untuk memanipulasi JavaScript array bersekutu, ia digunakan lebih kurang kerap daripada biasa. Perlu diingatkan bahawa mereka masih boleh berguna untuk penyimpanan data dan memudahkan penyimpanan bahagian, yang akan dicapai.

lokasi output

Dan sekarang kita akan belajar dalam sistem JavaScript? pelbagai output ke kotak dialog (pada skrin), serta nilai-nilai output komponen pelbagai.

Jika program yang anda mahu untuk memaparkan nilai-nilai semua komponen, maka ia adalah mudah untuk memohon arahan untuk. Menariknya, kaedah-kaedah pembolehubah kaunter untuk digunakan pada masa yang sama sebagai komponen indeks array.

pembersihan

Dalam usaha untuk menapis pelbagai JavaScript, anda perlu menetapkan semula panjangnya:

  • var myArray = [1, 2, 5, 23];
  • myArray.length = 0.

Berikut menunjukkan pelaksanaan destinasi jelas (), dalam kerangka, JavaScript-prototaip:

  • jelas: function () {;
  • this.length = 0;
  • kembali ini;
  • }.

Menambah dan mengeluarkan komponen

Nah, kita terus meneroka bahasa JavaScript menarik ini. elemen lokasi yang mungkin dan untuk membuang dan menambah cara yang sama seperti ciri-ciri konvensional objek lain. Tetapi terdapat beberapa perbezaan: menambah sifat angka panjang kualiti boleh berbeza-beza, tetapi dalam pengubahsuaian panjang ciri-ciri yang boleh dihapuskan kualiti berangka. Pada dasarnya, kerana memasang algoritma dalam tatasusunan adalah seperti berikut:

  • Apabila menambah ciri-ciri yang tidak diketahui digital i, jika panjang adalah sama dengan atau kurang daripada i, panjang ditentukan sebagai i + 1.
  • Apabila anda menukar kualiti panjang untuk melaksanakan langkah-langkah berikut: jika nilai yang diberikan adalah kurang daripada sifar, kemudian melemparkan RangeError. Menghapuskan semua indeks kualiti berangka yang sama dengan panjang yang baru, dan lebih besar daripada.

Sebenarnya membuang unsur tatasusunan JavaScript adalah mudah. Lagipun, walaupun menetapkan panjang, anda perlu mengeluarkan komponen "tambahan" daripadanya. Ia mengikuti dari ini pelbagai pilihan pembersihan. Jika pembolehubah diberikan pelbagai kosong baru, atas apa jua sebab, tidak berpuas hati, dan ia adalah perlu untuk menetapkan semula semasa, kualiti adalah panjang yang mencukupi untuk menetapkan nilai sifar.

kaedah unshift, shift, pop dan tolak

Walaupun pada hakikatnya bahawa komponen array ditukar secara manual, banyak mengesyorkan untuk menggunakan ini kaedah terbina dalam. Ia adalah nuansa ini menjamin nilai yang betul bagi kualiti dan kekurangan panjang dalam pas tatasusunan. Dengan cara ini, kualiti panjang betul akan sesuai dengan bilangan komponen.

Proses ini bergerak untuk menolak akhir barangan mudah dihantar. Pop kembali proses memberikan komponen akhir dan mengeluarkannya.

Secara umumnya di Internet Explorer di bawah versi kelapan unshift boleh kembali undefined, dalam penyemak imbas lain - nilai baru panjang. Supaya nilai pulangan dari unshift yang lebih baik untuk tidak berharap.

Penambahan dan penghapusan bahagian di pertengahan array

Jika anda mahu memadamkan pelbagai JavaScript, anda perlu? Adalah diketahui bahawa kaedah ini mempunyai Array.prototype.splice tanda tangan sambat.

Dia menarik diri daripada komponen pelbagai deleteCount, bermula dengan permulaan indeks. Jika anda lulus lebih daripada dua hujah, semua hujah-hujah berikutnya dalam array disusun di tempat yang tertentu. Jika permulaan tolak, indeks di mana untuk meneruskan pengeluaran akan menjadi sama dengan panjang + bermula. Berbalik kepada pelbagai unsur-unsur jauh berlaku.

Malah, dengan menggunakan kaedah sambat, ia adalah mungkin untuk mengeluarkan komponen dari pertengahan array atau menambah apa-apa bilangan mana-mana sahaja dalam array.

Dalam penjelmaan yang paling mudah, jika ia adalah perlu untuk mengeluarkan komponen dengan indeks i, array perlu meminta kaedah sambat dengan parameter i dan 1.

Pada dasarnya, pilihan kedua pada kaedah sambat tidak wajib, tetapi tingkah laku fungsi dengan satu hujah untuk setiap penyemak imbas adalah berbeza.

Sebagai contoh, dalam Firefox, Opera dalam variasi lepas, semua butiran sebelum akhir array akan dikeluarkan dalam Safari dan Chrome.

ada satu komponen dihapuskan dalam IE. Perubahan pertama adalah mustahil untuk meramalkan tingkah laku Opera - akan dikeluarkan satu item dengan permulaan index - 1. Oleh itu ia sentiasa perlu dalam kaedah ini untuk menghantar sekurang-kurangnya dua komponen.

kekunci

Sudah tentu, pembelajaran JavaScript, array bersekutu, seperti yang dinyatakan sebelum ini, anda juga tidak boleh diabaikan. Ini adalah pandangan abstrak maklumat (antara muka untuk menyimpan data), yang membolehkan untuk menyelamatkan sepasang bentuk "(kunci, nilai)" dan operasi menambah sepasang sokongan, serta penghapusan dan mencari pasangan kunci:

- FIND (utama).

- INSERT (value, utama).

- REMOVE (utama).

Adalah dipercayai bahawa dalam pelbagai bersekutu tidak boleh untuk menyelamatkan dua pasang dengan kunci yang sama. Dalam beberapa k + ay adalah nilai yang berkaitan dengan k utama. Semantik dan di sini dengan operasi di atas dalam pelbagai pelaksanaan tatasusunan seperti mungkin berbeza.

Oleh itu, MENCARI operasi (utama) mengembalikan nilai yang berkaitan dengan kunci yang diberikan, atau objek UNDEF tertentu, yang bermaksud bahawa nilai yang berkaitan dengan kunci yang diberikan, di luar talian. Dua tindakan lain tidak kembali (kecuali data mengenai sama ada operasi berjaya).

Secara umumnya, dari segi antara muka, pelbagai bersekutu yang dianggap sebagai lokasi yang mudah, di mana sebagai indeks boleh digunakan bukan sahaja nombor integer tetapi lain-lain jenis dan nilai - sebagai contoh, talian.

Secara kebetulan, sokongan untuk tatasusunan tersebut dianggap terdapat banyak bahasa pengaturcaraan peringkat tinggi seperti PHP, Perl, Ruby, Python, Tcl, JavaScript dan lain-lain. Untuk bahasa yang tidak mempunyai alat terbina dalam untuk bekerja dengan array bersekutu, dibuat sejumlah besar terwujudnya dalam bentuk perpustakaan.

Contoh pelbagai bersekutu boleh berfungsi sebagai panduan telefon. Dalam penjelmaan ini, nilai ditetapkan "F. IO + e ", dan kunci - nombor telefon. Satu nombor telefon adalah satu induk, tetapi satu orang boleh memiliki berbilang nombor.

lanjutan yang berkaitan

Perlu diingatkan bahawa sambungan paling terkenal termasuk yang berikut:

  • SETIAP - «berjalan kaki» pada semua menyelamatkan pasangan.
  • CLEAR - untuk memadam semua entri.
  • MIN - untuk mencari pasangan dengan nilai terendah utama.
  • MAX - untuk mencari pasangan dengan nilai utama terbesar.

Dalam kedua-dua kes terakhir yang perlu anda pada kekunci menunjukkan kesan perbandingan.

Merealisasikan array bersekutu

Terdapat banyak pelaksanaan yang berbeza array bersekutu. Pelaksanaan paling biasa mungkin berdasarkan lokasi mudah yang komponen adalah pasangan (kunci nilai). Untuk mempercepatkan fungsi carian, anda boleh menguruskan komponen array dengan dapatan utama dan melaksanakan menggunakan carian binari. Tetapi ia akan meningkatkan jumlah masa yang diperlukan untuk menambah pasangan baru, seperti yang akan perlu untuk "menolak" komponen lokasi yang muncul dalam sel kosong untuk membungkus rekod segar.

Pelaksanaan paling terkenal, berdasarkan pokok carian yang berbeza. Sebagai contoh, dalam tipikal bilik bacaan STL C ++ bahasa Pengangkutan peta dilaksanakan atas dasar hitam dan mahogani. Di Ruby, gaya, Tcl, Python menggunakan satu jenis jadual hash. Terdapat pelaksanaan lain.

Secara umum, setiap pelaksanaan mempunyai kelebihan sendiri dan kekurangan. Ia adalah penting bahawa semua tiga pembedahan telah digenapi secara purata, dan dalam tempoh yang paling teruk nuansa tentang (log n), di mana n - jumlah semasa untuk menyelamatkan par. Bagi pokok carian bersepadu (termasuk pokok-pokok hitam dan merah), keadaan ini berpuas hati.

Adalah diketahui bahawa dalam pelaksanaan berdasarkan jadual hash, bermakna waktu ditakrifkan sebagai O (1), yang lebih baik daripada tindakan berdasarkan pohon carian. Sudah tentu, ini tidak menjamin pelaksanaan operasi individu yang berkelajuan tinggi: masa tindakan INSERT dalam kes yang paling teruk dilambangkan sebagai O (n). Proses INSERT dilaksanakan untuk jangka masa yang panjang, apabila faktor pengisian mencapai titik tertinggi dan terdapat keperluan untuk membina semula indeks jadual hash.

Dengan cara ini, pernyataan hash ini tidak baik kerana mereka tidak dapat melaksanakan tindakan tambahan MAX, MIN dan algoritma untuk melangkau semua pasangan yang tersimpan dalam rangka menurunkan atau menambah kunci.

Similar articles

 

 

 

 

Trending Now

 

 

 

 

Newest

Copyright © 2018 ms.atomiyme.com. Theme powered by WordPress.