Javascript ialah bahasa ajaib, dan tatasusunannya adalah sama unik. Kami menyingkirkan najis, mengeluarkan intipati, dan meringkaskan amalan terbaik yang biasa digunakan. Jika terdapat sebarang kesilapan, sila nyatakan.
Tatasusunan Javascript ialah objek seperti tatasusunan yang mempunyai ciri-ciri objek. Apabila nama harta adalah kecil, integer bersebelahan, tatasusunan harus digunakan jika tidak, objek harus digunakan.
Sumber tatasusunan
Semua tatasusunan dibina daripada Tatasusunan Mari uji sifat pembina.
var arr = []; arr.constructor === Array; // true arr.constructor === Array.prototype.constructor; // true
Buat tatasusunan
//数组字面量方式 var arr1 = [1, 2, 3]; // [1,2,3] //构造函数方式 var arr2 = new Array(); // [] 空数组 var arr3 = new Array('9'); // ["9"] 一个字符串元素 var arr4 = new Array(9); // [] 数组长度length为9 var arr5 = new Array([9]); // [[9]] 相当于二维数组 var arr6 = new Array(1, 2, 3); // [1, 2, 3] var arr7 = new Array(1, function f(){}, {o : 6}, null,undefined,true); // 数组可以存储任意混合数据类型
Disebabkan cara arr4 berfungsi, apabila hanya satu parameter berangka dihantar kepada pembina Tatasusunan, pembina akan mengembalikan tatasusunan kosong dengan set atribut panjang. Oleh itu, adalah disyorkan untuk menggunakan kaedah literal tatasusunan, yang pendek dan padat.
Kesan sama ada objek ialah tatasusunan
var arr1 = [1, 2, 3]; typeof(arr1); // object
Adalah diketahui umum bahawa jenis tidak mengesan jenis dengan betul.
arr1 instanceof Array; //true
Kaedah instanceof tidak mempunyai masalah dalam halaman web Setelah halaman web lain bersarang, akan ada dua skop global, dan akan ada masalah dalam pengesanan apabila memanggil satu sama lain.
Array.isArray(arr1); // true
Array.isArray() ialah kaedah baharu dalam ECMAScript5 dan tidak mempunyai kecacatan. Satu-satunya masalah ialah pelayar IE8 tidak menyokongnya, dan pelayar IE9 tidak menyokongnya dalam mod ketat.
Object.prototype.toString.apply(arr1).slice(8, -1); // Array
Cara terakhir ialah cara terbaik untuk mengesan jenis.
Panjang tatasusunan
Panjang tatasusunan juga merupakan atributnya.Meningkatkan panjang tidak akan menyebabkan ralat di luar sempadan.
Nilai panjang adalah sama dengan nama atribut integer terbesar tatasusunan ditambah 1.
var arr1 = []; arr1[9] = 1; // 长度为10,只包含一个元素的数组
Tetapkan nilai kecil untuk memadamkan atribut yang namanya lebih besar daripada atau sama dengan panjang.
Jika nilai panjang ditetapkan kepada 0, ia adalah bersamaan dengan mengosongkan tatasusunan.
var arr2 = [1, 2, 3, 4, 5]; arr2.length = 3; // [1, 2, 3] arr2.length = 0; // []
Traversal tatasusunan
Untuk melintasi tatasusunan, jangan gunakan gelung for in untuk melintasi tatasusunan, kerana for in akan merentasi semua sifat pada rantai prototaip, tetapi kami tidak memerlukan begitu banyak. Ia disyorkan untuk digunakan untuk gelung.
var arr1 = [1, 2, 3]; arr1.test = 9; //for in 方式 for(var prop in arr1){ cosole.log(prop, arr1[prop]); } // 输出如下 // 0 1 // 1 2 // 2 3 // test 9 //for循环方式 for(var i = 0, len = arr1.length; i < len; i++){ console.log(arr1[i]); } //输出如下 // 1 // 2 // 3
Kami melihat bahawa kaedah for in mempunyai nilai ujian tambahan, yang boleh dihapuskan menggunakan fungsi hasOwnProperty, tetapi itu akan menjadi lebih perlahan daripada kaedah gelung for.
Caching panjang tatasusunan ialah langkah yang perlu, dan terdapat overhed prestasi untuk setiap akses (penyemak imbas terkini telah mengoptimumkan aspek ini).
Ringkasan
Pengenalan ringkas kepada pengetahuan asas Array Pada ketika ini, anda boleh mempunyai pemahaman yang lebih komprehensif tentang Array. Artikel seterusnya memperkenalkan kaedah Array.
Walaupun terdapat banyak aspek Javascript yang tidak mudah difahami, dalam tempoh pengajian yang panjang, saya perlahan-lahan jatuh cinta dengannya (kerana tiada gadis untuk saya cintai sekarang).