Array Jarang dalam JavaScript
Salah tanggapan biasa dalam JavaScript ialah andaian bahawa tatasusunan adalah bersebelahan, bermakna ia mengandungi semua elemen dari indeks 0 kepada panjang semasa mereka. Walau bagaimanapun, ini tidak berlaku: Tatasusunan JavaScript adalah jarang.
Apabila elemen diakses atau ditetapkan menggunakan indeks yang lebih besar daripada panjang semasa, slot kosong dicipta dan tatasusunan dilanjutkan kepada yang sesuai saiz. Sebagai contoh, jika tatasusunan[Date.getTime()] digunakan untuk menetapkan nilai, tatasusunan akan dilanjutkan untuk mengandungi slot kosong dari indeks 0 hingga masa semasa, walaupun slot ini tidak akan digunakan.
Pelaksanaan Jadual Cincang
Tatasusunan jarang dilaksanakan sebagai jadual cincang secara dalaman. Kekunci, yang boleh menjadi integer, rentetan, terapung atau objek lain, ditukar kepada rentetan menggunakan toString() sebelum ditambahkan pada cincang. Ini membenarkan sistem pengindeksan yang fleksibel.
Contoh Ujian
Untuk mengesahkan sifat tatasusunan yang jarang, pertimbangkan kod ujian berikut:
var array = []; array[0] = "zero"; array[new Date().getTime()] = "now"; array[3.14] = "pi"; for (var i in array) { alert("array[" + i + "] = " + array[i] + ", typeof(" + i + ") == " + typeof(i)); }
Kod ini akan memaparkan:
array[0] = zero, typeof(0) == string array[1254503972355] = now, typeof(1254503972355) == string array[3.14] = pi, typeof(3.14) == string
Sintaks untuk...dalam berulang ke atas indeks yang ditentukan, menunjukkan bahawa tatasusunan dilanjutkan dengan slot kosong apabila mengakses atau menetapkan elemen dengan indeks tidak berurutan.
Perbezaan Pelayar
Pelayar yang berbeza mengendalikan tatasusunan yang jarang dengan cara yang sama, dengan tatasusunan dilaksanakan sebagai jadual cincang. Walau bagaimanapun, adalah penting untuk mempertimbangkan penggunaan tatasusunan jarang apabila berurusan dengan indeks yang sangat besar, kerana ini boleh memberi kesan kepada penggunaan dan prestasi memori.
Atas ialah kandungan terperinci Adakah Tatasusunan JavaScript Benar-benar Bersebelahan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!