Pengenalan kepada Asas Tatasusunan Javascript_Pengetahuan Asas

WBOY
Lepaskan: 2016-05-16 15:10:51
asal
1126 orang telah melayarinya

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
Salin selepas log masuk

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);
// 数组可以存储任意混合数据类型

Salin selepas log masuk

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
Salin selepas log masuk

Adalah diketahui umum bahawa jenis tidak mengesan jenis dengan betul.

arr1 instanceof Array; //true
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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,只包含一个元素的数组
Salin selepas log masuk

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; // []
Salin selepas log masuk

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

Salin selepas log masuk

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

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!