Rumah >hujung hadapan web >tutorial js >Pengenalan kepada Asas Tatasusunan Javascript_Pengetahuan Asas

Pengenalan kepada Asas Tatasusunan Javascript_Pengetahuan Asas

WBOY
WBOYasal
2016-05-16 15:10:511221semak imbas

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).

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn