Tidak seperti bahasa Java, array di JavaScript memiliki tiga fitur:
1. Tidak ada tipe. Anggota array dapat dari jenis apa pun, dan array yang sama juga dapat terdiri dari berbagai jenis anggota.
2. Panjangnya bervariasi. Panjang array dapat diubah secara dinamis, sehingga tidak ada masalah akses array di luar batas dalam JavaScript.
3. Diskontinuitas. Posisi anggota dalam array dapat kontinu (0, 1, 2, 3 ...) atau terputus -putus. Array apa pun memiliki atribut yang disebut panjang. Ketika anggota array kontinu, nilai panjang konsisten dengan jumlah anggota array; Ketika anggota array tidak berkelanjutan, nilai panjangnya lebih besar dari jumlah anggota array. Dibandingkan dengan array kontinu, kinerja baca dan tulis array terputus lebih buruk.
percobaan:
Salinan kode adalah sebagai berikut:
var o = [42, "Teks Sampel", {x: 88}]; // array javascript tidak diketik.
Console.log (o); // [42, "Teks Sampel", Objek {x = 88}]
o [3] = 27; // Array JavaScript adalah dinamis.
Console.log (o); // [42, "Teks Sampel", Objek {x = 88}, 27]
o [5] = 99; // Array JavaScript jarang.
Console.log (o); // [42, "Teks Sampel", Objek {x = 88}, 27, tidak ditentukan, 99]
Seperti yang dapat dilihat dari contoh di atas, untuk array yang terputus -putus, JavaScript akan mengembalikan tidak ditentukan saat mengakses anggota yang hilang. Jika array terus menerus, tetapi salah satu anggotanya tidak terdefinisi, hasil mengakses array adalah sama:
Salinan kode adalah sebagai berikut:
var a = [42, "Contoh teks", {x: 88}, 27, tidak ditentukan, 99];
Console.log (a); // [42, "Teks Sampel", Objek {x = 88}, 27, tidak ditentukan, 99]
Array tersebut terputus -putus dan memiliki anggota yang hilang, yang sama dengan arraynya berkelanjutan tetapi memiliki anggota yang tidak ditentukan. Dalam kedua kasus, hasil mengakses konten array adalah sama. Tetapi masih ada beberapa perbedaan halus antara keduanya, terutama dimanifestasikan dalam mengakses kunci array:
Salinan kode adalah sebagai berikut:
Console.log (4 dalam O); // Salah
console.log (4 dalam a); // true
Dapat dilihat bahwa meskipun hasil yang diperoleh dengan mengakses konten dalam dua kasus ini sama, mekanisme internal mereka sama sekali berbeda: ketika array terputus, anggota tertentu hilang, jadi ketika mengakses anggota, JavaScript mengembalikan tidak terdefinisi; Ketika array terus menerus, semua anggota ada, tetapi nilai -nilai beberapa anggota relatif istimewa dan tidak ditentukan.
Dari contoh di atas, kita juga dapat melihat bahwa esensi array dalam JavaScript hanyalah objek dengan angka sebagai kunci, dan tidak ada perbedaan antara nilai -nilai kunci biasa dan objek. Bahkan, ketika membaca dan menulis array, JavaScript akan mencoba mengkonversi parameter menjadi bilangan bulat positif. Jika konversi berhasil, operasi array akan dilakukan (secara otomatis memperbarui properti panjang array). Jika gagal, parameter akan dikonversi menjadi string dan kemudian membaca dan menulis ke objek normal. Tentu saja, dalam implementasi juru bahasa JavaScript, banyak optimasi kinerja dibuat untuk fitur array menggunakan angka sebagai kunci. Oleh karena itu, dalam penggunaan aktual, jika kunci objek adalah semua angka, langsung menggunakan objek array akan mendapatkan hasil yang lebih efisien.
Dalam proses mendefinisikan array, JavaScript memungkinkan koma tambahan muncul, dan juga memungkinkan anggota array yang hilang antara dua koma:
Salinan kode adalah sebagai berikut:
var x = [1,2,3,]; // trailing comma akan dihilangkan.
console.log (x.length); // 3
var y = [1 ,, 3]; // Anggota dapat dilewatkan.
console.log (y); // [1, tidak terdefinisi, 3]
console.log (1 dalam y); // false
console.log (y.length); // 3
Untuk pembuatan array, JavaScript mendukung empat metode:
1. Gunakan literal (seperti ekspresi braket dalam contoh di atas) untuk secara langsung membuat objek array.
2. Gunakan konstruktor array () dan jangan lulus dalam parameter apa pun. Dalam hal ini, array kosong dibuat dengan efek yang sama seperti [].
3. Gunakan konstruktor array () untuk melewati bilangan bulat positif sebagai panjang array. Dalam hal ini, JavaScript akan memesan ruang memori yang sesuai untuk menyimpan array ini. Perlu dicatat bahwa kunci array tidak ditentukan pada saat ini, yaitu, tidak ada anggota dalam array. Efeknya setara dengan [,,,,]
4. Gunakan konstruktor array () untuk melewati anggota array.
percobaan:
Salinan kode adalah sebagai berikut:
var z = array baru (10); // memori pra-alokasi, tetapi belum ada indeks yang didefinisikan.
console.log (3 dalam z); // false
var m = array baru (42, 33, 99, "test", {k: 99});
console.log (m); // [42, 33, 99, "test", objek {k = 99}]
Dalam standar ecmascript 5, array.isArray () dapat digunakan untuk menentukan apakah suatu objek adalah array:
Salinan kode adalah sebagai berikut:
Array.isarray ([]); // true
Array.isArray ({}); // false