1. Memahami array
Array adalah kumpulan jenis data tertentu, dan tipe data dapat berupa bilangan bulat, string, atau bahkan objek.
JavaScript tidak mendukung array multidimensi, tetapi karena array dapat berisi objek (array juga objek), array dapat mencapai fungsi yang mirip dengan array multidimensi dengan saling bersarang.
1.1 Menentukan array
Menyatakan array dengan 10 elemen:
Salinan kode adalah sebagai berikut: var a = array baru (10);
Pada saat ini, ruang memori telah dibuka untuk A, berisi 10 elemen, dan dipanggil dengan nama array plus [subskrip], misalnya, [2], tetapi elemen tidak diinisialisasi pada saat ini, dan panggilan akan kembali tidak ditentukan.
Kode berikut mendefinisikan array variabel dan memberikan nilai.
Salinan kode adalah sebagai berikut:
var a = array baru ();
a [0] = 10;
a [1] = "aaa";
A [2] = 12.6;
Seperti disebutkan di atas, objek dapat ditempatkan di array, seperti kode berikut:
Salinan kode adalah sebagai berikut:
var a = array baru ();
a [0] = true;
a [1] = document.getElementById ("text");
A [2] = {x: 11, y: 22};
A [3] = array baru ();
Array juga dapat ditugaskan secara langsung saat instantiated, misalnya:
Salinan kode adalah sebagai berikut:
var a = array baru (1, 2, 3, 4, 5);
var b = [1, 2, 3, 4, 5];
A dan B keduanya array, tetapi B menggunakan deklarasi implisit dan menciptakan contoh lain. Pada saat ini, jika peringatan (a == b) digunakan, false akan muncul
1.2 Array Multidimensi
Faktanya, JavaScript tidak mendukung array multi-dimensi. Dalam ASP, Anda dapat menggunakan DIM A (10,3) untuk mendefinisikan array multi-dimensi. Dalam JavaScript, jika Anda menggunakan var a = array baru (10,3) Anda akan melaporkan kesalahan.
Tetapi seperti yang disebutkan sebelumnya, sebuah array dapat berisi objek, sehingga elemen dalam array dapat dinyatakan sebagai array, misalnya:
Salinan kode adalah sebagai berikut:
var a = array baru ();
A [0] = array baru ();
A [0] [0] = 1;
waspada (a [0] [0]); // pop 1
Tetapkan nilai saat dinyatakan
Salinan kode adalah sebagai berikut:
var a = array baru ([1,2,3], [4,5,6], [7,8,9]);
var b = [[1,2,3], [4,5,6], [7,8,9]];
Efek yang sama adalah, A menggunakan instantiasi konvensional, B adalah deklarasi implisit, dan hasilnya adalah array multi-dimensi.
1.3 Array Literals
Saya benar -benar tidak tahu apa namanya dalam array Tiongkok, teks?
Berbicara tentang array, kita harus berbicara tentang literal array. Array sebenarnya adalah objek khusus. Objek memiliki sifat dan metode yang unik. Nilai dan panggilan diperoleh melalui nama objek, atribut, objek, dan metode (), sementara array menggunakan subskrip untuk mendapatkan nilai. Array literal sangat mirip dengan array, dan mereka adalah koleksi tipe data tertentu. Namun, literal array pada dasarnya adalah objek, deklarasi dan panggilan berbeda dari array:
Salinan kode adalah sebagai berikut:
var aa = objek baru ();
aa.x = "kucing";
aa.y = "cerah";
peringatan (aa.x); // Pop Up Cat
Buat objek sederhana. Panggilan umum adalah melalui AA.X. Jika diperlakukan sebagai literal array, kucing akan muncul dengan peringatan (aa ["x"])
Salinan kode adalah sebagai berikut:
var a = {x: "cat", y: "Sunny"};
waspada (a ["y"]); // Popt Sunny
Ini adalah cara lain untuk membuat objek, dan hasilnya sama
2. Operasi elemen array
Seperti disebutkan di atas, elemen dapat dibaca dan ditulis melalui array [subscript]
Kisaran subskrip adalah 0 (23 (superscript 2) -1). Ketika subskrip negatif, titik mengambang atau bahkan nilai boolean, array akan secara otomatis dikonversi ke jenis objek, misalnya:
Salinan kode adalah sebagai berikut:
var b = array baru ();
B [2.2] = "xxxxx";
waspada (b [2.2]); //-> xxxxx
Pada saat ini, setara dengan B ["2.2"] = "xxxxx".
2.1 loop array
Salinan kode adalah sebagai berikut:
var a = [1,2,3,4,5,6];
untuk (var i = 0; i <a.length; i ++) {
waspada (a [i]);
}
Ini adalah yang paling umum digunakan. Setelah melalui array, kode akan muncul 1 hingga 6 pada gilirannya.
Ada satu lagi yang umum digunakan:
Salinan kode adalah sebagai berikut:
var a = [1,2,3,4,5,6];
untuk (var e dalam a) {
waspada (e);
}
Atau muncul 1 hingga 6 pada gilirannya. Karena ... di adalah objek yang melewati objek (array adalah objek khusus) dan digunakan pada array. Karena array tidak memiliki nama atribut, nilainya secara langsung. Pernyataan struktur ini digunakan pada objek, misalnya:
Salinan kode adalah sebagai berikut:
var a = {x: 1, y: 2, z: 3};
untuk (var e dalam a) {
peringatan (e + ":" + a [e]);
}
Pada saat ini, E mengambil nama atribut, yaitu x, y, x. Untuk mendapatkan nilainya, nama array [atribut] digunakan, jadi [e] setara dengan ["x"], [y "], [z"], ["z"]
2.2 Fungsi yang umum digunakan dalam array
concat
Tambahkan array setelah array yang ada dan kembalikan array baru tanpa mempengaruhi array yang ada:
Salinan kode adalah sebagai berikut:
var a = [123];
var b = "Sunnycat";
var c = ["www", 21, "ido"];
var d = {x: 3.14, y: "sk"};
var e = [1,2,3,4, [5,6, [7,8]]];
waspada (a.concat (b)); // -> 123, Sunnycat
waspada (a); // -> 123
waspada (b.concat (c, d)); // -> Sunnycatwww, 21, IDO [Object Object]
waspada (c.concat (b)); // -> www, 21, ido, Sunnycat
waspada (e.concat (11,22,33) .join (" #")); // -> 1 # 2 # 3 # 4 # 5,6,7,8 # 11 # 22 # 33
Perlu dicatat bahwa itu hanya dapat digunakan untuk array atau string. Jika yang terhubung (a) adalah numerik, boolean, atau objek, kesalahan akan dilaporkan. Ketika string terhubung ke array, string akan disambung dengan elemen pertama dari array ke dalam elemen baru, dan string yang terhubung akan ditambahkan dengan string (saya tidak tahu alasan untuk ini, silakan ungkapkan jika Anda terbiasa dengan informasi). Bagi mereka yang berisi array dan objek, jaga agar tetap sama setelah koneksi.
Bergabung
Hubungkan array ke string dengan spacer yang ditentukan:
Salinan kode adalah sebagai berikut:
var a = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
Lert (A.join (",")); // -> a, b, c, d, e, f, g setara dengan a.tostring ()
waspada (a.join ("x")); // -> AXBXCXDXEXFXG
Ini mudah dimengerti, tetapi harus dicatat bahwa itu hanya diubah menjadi array satu dimensi. Jika ada array dalam array, itu tidak akan menggunakan string yang ditentukan oleh gabungan, tetapi gunakan tostring default (), misalnya,
Salinan kode adalah sebagai berikut:
var a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', [11,22,33]];
peringatan (a.join (" *")); // -> a * b * c * d * e * f * g * 11,22,33
Catatan: Array dalam array tidak digunakan untuk * koneksi
pop
Hapus elemen terakhir dari array dan kembalikan elemen
Salinan kode adalah sebagai berikut:
var a = ["aa", "bb", "cc"];
document.write (a.pop ()); // -> cc
document.write (a); // -> aa, bb
Catatan: Jika array kosong, tidak ditentukan dikembalikan.
dorongan
Tambahkan array di belakang array dan kembalikan panjang array baru
Salinan kode adalah sebagai berikut:
var a = ["aa", "bb", "cc"];
document.write (A.push ("dd")); // -> 4
document.write (a); // -> aa, bb, cc, dd
Document.write (A.Push ([1,2,3])); // -> 5
document.write (a); // -> aa, bb, cc, dd, 1,2,3
Perbedaan dari CONDAT adalah bahwa CONDAT tidak mempengaruhi array asli, itu secara langsung mengembalikan array baru, sementara dorong langsung memodifikasi array asli, yang mengembalikan panjang array baru.
menyortir
Penyortiran array, mari kita lihat contoh pertama
Salinan kode adalah sebagai berikut:
var a = [11,2,3,33445,5654.654, "ASD", "B"];
alert (a.sort ()); // -> 11,2,3,33445,5654.654, ASD, b
Apakah hasilnya sangat mengejutkan? Ya, penyortiran tidak didasarkan pada ukuran integer, tetapi pada perbandingan string, yaitu untuk membandingkan kode ANSI dari karakter pertama, dan yang kecil ada di depan. Jika hal yang sama benar, karakter kedua akan dibandingkan. Jika Anda ingin membandingkan sesuai dengan nilai integer, Anda dapat melakukan ini.
Salinan kode adalah sebagai berikut:
var a = [11,2,3,33445,5654.654];
a.sort (fungsi (a, b) {
mengembalikan a - b;
});
waspada (a); // -> 2,3,11.654.5654.33445
Metode sort () memiliki parameter opsional, yang merupakan fungsi dalam kode. Ini adalah contoh sederhana. Non-number tidak dapat disortir. Non-nomor harus diadili lebih banyak, jadi saya tidak akan membicarakannya di sini.
balik
Sortir terbalik array dan sortir (), ambil karakter ascii karakter pertama dan bandingkan
Salinan kode adalah sebagai berikut:
var a = [11,3,5,66,4];
waspada (a.reverse ()); // -> 4,66,5,3,11
Jika array juga berisi array, itu tidak akan menyelesaikan elemen jika diproses sebagai objek.
Salinan kode adalah sebagai berikut:
var a = ['a', 'b', 'c', 'd', 'e', 'f', 'g', [4,11,33]];
waspada (a.reverse ()); // -> 4,11,33, g, f, e, d, c, b, a
peringatan (a.join (" *")); // -> 4,11,33 * g * f * e * d * c * b * a
Itu harus menjadi 11 terakhir, karena 4, 11, 33 dianggap sebagai perbandingan objek yang lengkap, sehingga mereka berada di peringkat terlebih dahulu.
Jika Anda tidak dapat memahaminya, gunakan gabung () untuk merangkai bersama, dan itu akan jauh lebih jelas
menggeser
Hapus elemen pertama dari array dan kembalikan elemen, yang mirip dengan pop
Salinan kode adalah sebagai berikut:
var a = ["aa", "bb", "cc"];
document.write (a.shift ()); // -> aa
document.write (a); // -> bb, cc
Catatan: Saat array kosong, tidak ditentukan dikembalikan.
tidak henti
Berbeda dengan shift, tambahkan elemen ke bagian depan array dan kembalikan panjang array yang baru.
Salinan kode adalah sebagai berikut:
var a = ["aa", "bb", "cc"];
Document.write (A.unshift (11)); // -> 4 Catatan: Tidak ditentukan dikembalikan di IE
document.write (a); // -> 11, aa, bb, cc
Document.write (A.unshift ([11,22])); // -> 5
document.write (a); // -> 11,22,11, aa, bb, cc
Document.write (A.unshift ("Cat")); // -> 6
document.write (a); // -> kucing, 11,22,11, aa, bb, cc
Perhatikan metode ini, tidak terdefinisi akan dikembalikan di IE, yang tampaknya menjadi bug dengan Microsoft. Saya dapat dengan benar memainkan panjang baru array di bawah Firefox.
mengiris
Kembalikan fragmen array
Salinan kode adalah sebagai berikut:
var a = ['a', 'b', 'c', 'd', 'e', 'f', 'g'];
waspada (a.slice (1,2)); // -> b
peringatan (a.slice (2)); // -> c, d, e, f, g
peringatan (a.slice (-4)); // -> d, e, f, g
peringatan (a.slice (-2, -6)); // -> kosong
a.slice (1,2), mulai dari subskrip adalah 1 ke subskrip adalah 2, perhatikan bahwa elemen dengan subskrip tidak termasuk.
Jika hanya ada satu parameter, maka standarnya adalah ke akhir array
-4 mewakili elemen terakhir keempat, jadi empat elemen dalam hitungan mundur dikembalikan
Baris terakhir dimulai dari yang kedua hingga terakhir. Karena dicegat kemudian, jelas tidak mungkin untuk mengambil elemen sebelumnya, sehingga mengembalikan array kosong. Jika diubah menjadi a.slice (-6, -2), ia mengembalikan b, c, d, e
sambatan
Hapus elemen fragmen dari array dan kembalikan elemen yang dihapus
Salinan kode adalah sebagai berikut:
var a = [1,2,3,4,5,6,7,8,9];
document.write (a.splice (3,2)); // -> 4,5
document.write (a); // -> 1,2,3,6,7,8,9
document.write (a.splice (4)); // -> 7,8,9 Catatan: Kembali kosong di bawah IE
document.write (a); // -> 1,2,3,6
document.write (a.splice (0,1)); // -> 1
document.write (a); // -> 2,3,6
document.write (a.splice (1,1, ["aa", "bb", "cc"]))); // -> 3
document.write (a); // -> 2, aa, bb, cc, 6,7,8,9
document.write (a.splice (1,2, "ee"). gabungkan ("#")); // -> AA, BB, CC#6
document.write (a); // -> 2, ee, 7,8,9
document.write (a.splice (1,2, "cc", "aa", "tt"). gabung ("#")); // -> EE#7
document.write (a); // -> 2, cc, aa, tt, 8,9
Perhatikan bahwa metode ini ada di IE. Parameter kedua diperlukan. Jika tidak diisi, itu akan default ke 0. Misalnya, a.splice (4), dan di IE, itu akan kembali kosong. Efeknya setara dengan a.splice (4,0)
tostring
Mengubah array menjadi string, bukan hanya array, tetapi semua objek dapat menggunakan metode ini
Salinan kode adalah sebagai berikut:
var a = [5,6,7,8,9, ["a", "bb"], 100];
document.write (a.tostring ()); // -> 5,6,7,8,9, a, bb, 100
var b = tanggal baru ()
document.write (b.tostring ()); // -> Sabtu 8 Agustus 17:08:32 UTC+0800 2009
var c = fungsi {
Peringatan;
}
document.write (c.tostring ()); // -> function (s) {alert (s); }
Nilai boolean mengembalikan nama objek objek yang benar atau salah, dan objek]
Dibandingkan dengan metode gabungan (), join () hanya menggantikan array satu dimensi, sementara tostring () sepenuhnya merencanakan seluruh array (terlepas dari satu dimensi atau multidimensi).
Pada saat yang sama, metode ini dapat digunakan untuk konversi desimal, biner, ength dan heksadesimal, misalnya:
Salinan kode adalah sebagai berikut:
var a = [5,6,7,8,9, "a", "bb", 100];
untuk (var i = 0; i <a.length; i ++) {
Document.write (a [i] .tostring () + "biner adalah" + a [i] .tostring (2) + ", octal adalah" + a [i] .tostring (8) + ", heksadesimal adalah" + a [i] .tostring (16)); // -> 4,5
}
Hasil output:
Salinan kode adalah sebagai berikut:
Biner 5 adalah 101, oktal adalah 5, dan heksadesimal adalah 5
Biner 6 adalah 110, oktal adalah 6, dan heksadesimal adalah 6
Biner 7 adalah 111, oktal adalah 7, dan heksadesimal adalah 7
Biner 8 adalah 1000, oktal adalah 10, dan heksadesimal adalah 8
Biner 9 adalah 1001, oktal adalah 11, dan heksadesimal adalah 9
Biner A adalah A, oktal adalah A, dan heksadesimal adalah a
Biner BB adalah BB, oktal adalah BB, dan heksadesimal adalah BB.
Biner 100 adalah 1100100, oktal adalah 144, dan heksadesimal adalah 64.
Konversi hanya dapat dilakukan pada elemen. Jika seluruh array dikonversi, array akan dikembalikan utuh.
tolokalestring
Mengembalikan string format lokal, terutama digunakan pada objek tanggal
Salinan kode adalah sebagai berikut:
var a = tanggal baru ();
document.write (a.tostring ()); // -> Sabtu 8 Agustus 17:28:36 UTC+0800 2009
document.write (a.tolocalestring ()); // -> 8 Agustus 2009 17:28:36
document.write (a.tolocaledateString ()); // -> 8 Agustus 2009
Perbedaannya adalah bahwa tostring () mengembalikan format standar, dan tolocalestring () mengembalikan tanggal penuh dari format lokal (dalam [panel kontrol] >> [wilayah dan opsi bahasa], dengan memodifikasi format [waktu] dan [tanggal panjang]), hanya membutuhkan waktu yang lebih singkat.
nilai
Mengembalikan nilai asli yang berbeda sesuai dengan objek yang berbeda. Jika digunakan untuk output, ini mirip dengan tostring (). Namun, tostring () mengembalikan tipe string, dan nilai () mengembalikan tipe objek asli
Salinan kode adalah sebagai berikut:
var a = [1,2,3, [4,5,6, [7,8,9]]];
var b = tanggal baru ();
var c = true;
var d = function () {
alert ("Sunnycat");
};
document.write (a.valueof ()); // -> 1,2,3,4,5,6,7,8,9
document.write (typeof (a.valueof ())); // -> objek
document.write (b.valueof ()); // -> 1249874470052
document.write (typeof (b.valueof ())); // -> Nomor
document.write (c.valueof ()); // -> true
document.write (typeof (c.valueof ())); // -> boolean
Document.write (D.ValueOf ()); // -> function () {alert ("sunnycat"); }
Document.write (typeof (D.ValueOf ())); // -> fungsi
Array juga merupakan objek, jadi typeof (a.valueof ()) mengembalikan objek, dan array multidimensi yang dikembalikan masih
Salinan kode adalah sebagai berikut:
var a = [1,2,3, [4,5,6, [7,8,9]]];
var aa = a.valueof ();
document.write (aa [3] [3] [1]); // -> 8
Objek tanggal mengembalikan jumlah milidetik dari 1 Januari 1970, dan objek matematika dan kesalahan tidak memiliki metode nilai.