Tatasusunan JavaScript
JavaScript Array
JavaScript Array boleh mengandungi sebarang jenis data dan mengakses setiap elemen melalui indeks.
Untuk mendapatkan panjang Array, akses atribut length secara terus:
var arr = [1, 2, 3.14, 'Hello', null, true]; arr.length; // 6
Sila ambil perhatian bahawa memberikan nilai baharu secara langsung kepada panjang Array akan menyebabkan saiz Array berubah:
var arr = [1, 2, 3]; arr.length; // 3 arr.length = 6; arr; // arr變?yōu)閇1, 2, 3, undefined, undefined, undefined] arr.length = 2; arr; // arr變?yōu)閇1, 2]
Array boleh mengubah suai elemen yang sepadan kepada nilai baharu melalui indeks Oleh itu, memberikan nilai kepada indeks Array akan mengubah suai Array secara langsung:
var arr = ['A', 'B', 'C']; arr[1] = 99; arr; // arr現(xiàn)在變?yōu)閇'A', 99, 'C']
Sila ambil perhatian bahawa jika indeks. melebihi julat apabila menetapkan nilai melalui indeks, Ia juga akan menyebabkan perubahan dalam saiz Tatasusunan:
var arr = [1, 2, 3]; arr[5] = 'x'; arr; // arr變?yōu)閇1, 2, 3, undefined, undefined, 'x']
Kebanyakan bahasa pengaturcaraan lain tidak membenarkan perubahan langsung kepada saiz tatasusunan, dan keluar akses -of-bounds kepada indeks akan melaporkan ralat. Walau bagaimanapun, JavaScript Array tidak mempunyai sebarang ralat. Apabila menulis kod, tidak disyorkan untuk mengubah suai secara langsung saiz Array Apabila mengakses indeks, pastikan indeks tidak keluar dari had.
indexOf
Serupa dengan String, Array juga boleh mencari kedudukan elemen tertentu melalui indexOf():
var arr = [10, 20, '30', 'xyz']; arr.indexOf(10); // 元素10的索引為0 arr.indexOf(20); // 元素20的索引為1 arr.indexOf(30); // 元素30沒有找到,返回-1 arr.indexOf('30'); // 元素'30'的索引為2
Nota, nombor 30 dan rentetan '30' adalah elemen yang berbeza.
slice
slice() ialah versi substring() String Ia memintas beberapa elemen Array dan kemudian mengembalikan Array baharu:
var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G']; arr.slice(0, 3); // 從索引0開始,到索引3結(jié)束,但不包括索引3: ['A', 'B', 'C'] arr.slice(3); // 從索引3開始到結(jié)束: ['D', 'E', 'F', 'G']< ??. >Perhatikan bahawa parameter mula dan akhir slice() termasuk indeks permulaan dan tidak termasuk indeks akhir. Jika anda tidak menghantar sebarang parameter untuk dihiris(), ia akan memintas semua elemen dari awal hingga akhir. Dengan menggunakan ini, kita boleh menyalin Array dengan mudah:
var arr = ['A', 'B', 'C', 'D', 'E', 'F', 'G']; var aCopy = arr.slice(); aCopy; // ['A', 'B', 'C', 'D', 'E', 'F', 'G'] aCopy === arr; // false
push and pop
push() menambah beberapa elemen pada penghujung Array, dan pop() Delete elemen terakhir Array:var arr = [1, 2]; arr.push('A', 'B'); // 返回Array新的長度: 4 arr; // [1, 2, 'A', 'B'] arr.pop(); // pop()返回'B' arr; // [1, 2, 'A'] arr.pop(); arr.pop(); arr.pop(); // 連續(xù)pop 3次 arr; // [] arr.pop(); // 空數(shù)組繼續(xù)pop不會報錯,而是返回undefined arr; // []
unshift and shift
Jika anda ingin menambah beberapa elemen pada head Array, gunakan kaedah unshift(), shift( ) kaedah memadamkan elemen pertama Array:var arr = [1, 2]; arr.unshift('A', 'B'); // 返回Array新的長度: 4 arr; // ['A', 'B', 1, 2] arr.shift(); // 'A' arr; // ['B', 1, 2] arr.shift(); arr.shift(); arr.shift(); // 連續(xù)shift 3次 arr; // [] arr.shift(); // 空數(shù)組繼續(xù)shift不會報錯,而是返回undefined arr; // []
sort
sort() boleh mengisih Array semasa, dan ia akan mengubah suai kedudukan Elemen semasa secara langsung , apabila dipanggil terus, diisih mengikut susunan lalai:var arr = ['B', 'C', 'A']; arr.sort(); arr; // ['A', 'B', 'C']Bolehkah ia diisih mengikut susunan yang ditentukan oleh kami? Sudah tentu, kita akan membincangkannya dalam fungsi berikut.
reverse
reverse() mengalih keluar elemen keseluruhan Array, iaitu, membalikkan:var arr = ['one', 'two', 'three']; arr.reverse(); arr; // ['three', 'two', 'one']
splice< . concat
kaedah concat() menyambungkan Array semasa kepada Array lain dan mengembalikan Array baharu: var arr = ['Microsoft', 'Apple', 'Yahoo', 'AOL', 'Excite', 'Oracle'];
// 從索引2開始刪除3個元素,然后再添加兩個元素:
arr.splice(2, 3, 'Google', 'Facebook'); // 返回刪除的元素 ['Yahoo', 'AOL', 'Excite']
arr; // ['Microsoft', 'Apple', 'Google', 'Facebook', 'Oracle']
// 只刪除,不添加:
arr.splice(2, 2); // ['Google', 'Facebook']
arr; // ['Microsoft', 'Apple', 'Oracle']
// 只添加,不刪除:
arr.splice(2, 0, 'Google', 'Facebook'); // 返回[],因為沒有刪除任何元素
arr; // ['Microsoft', 'Apple', 'Google', 'Facebook', 'Oracle']
Sila ambil perhatian bahawa kaedah concat( ) tidak mengubah suai Array semasa, tetapi mengembalikan Array baharu.
Malah, kaedah concat() boleh menerima sebarang bilangan elemen dan Array, dan secara automatik memisahkan Array, dan kemudian menambah semuanya pada Array baharu: var arr = ['A', 'B', 'C'];
var added = arr.concat([1, 2, 3]);
added; // ['A', 'B', 'C', 1, 2, 3]
arr; // ['A', 'B', 'C']
Kaedah join() ialah kaedah yang sangat praktikal Ia menghubungkan setiap elemen Tatasusunan semasa dengan rentetan yang ditentukan, dan kemudian mengembalikan rentetan yang disambungkan:
.var arr = ['A', 'B', 'C']; arr.concat(1, 2, [3, 4]); // ['A', 'B', 'C', 1, 2, 3, 4]
Jika elemen Array bukan rentetan, ia akan ditukar secara automatik kepada rentetan sebelum penyatuan.
Tatasusunan berbilang dimensi
Jika elemen tatasusunan juga merupakan Tatasusunan, tatasusunan berbilang dimensi boleh dibentuk, contohnya:
rreeeArray di atas mengandungi 3 elemen, dua yang pertama adalah Arrays sendiri.