Tatasusunan ECMAScript agak berbeza daripada tatasusunan dalam bahasa lain. Walaupun tatasusunan dalam ECMAScript juga merupakan senarai tersusun, setiap item dalam tatasusunan boleh menyimpan sebarang jenis data. Saiz tatasusunan ECMAScript boleh dilaraskan secara dinamik.
Terdapat dua cara asas untuk membuat tatasusunan. Yang pertama ialah menggunakan pembina Array, seperti yang ditunjukkan di bawah:
var colors = new Array();
Jika anda mengetahui bilangan item yang akan disimpan dalam tatasusunan, anda juga boleh menghantar parameter kepada pembina, dan parameter secara automatik akan menjadi nilai atribut panjang, seperti berikut:
warna var = Tatasusunan baharu(20);
Anda juga boleh menghantar item yang harus dimasukkan dalam tatasusunan kepada pembina Tatasusunan, seperti yang ditunjukkan dalam kod berikut:
var colors = new Array("merah","biru");
Di samping itu, anda juga boleh meninggalkan operator baharu apabila menggunakan pembina Array, seperti yang ditunjukkan di bawah:
warna var = Tatasusunan(20);
Cara kedua untuk mencipta tatasusunan ialah menggunakan tatatanda literal tatasusunan. Literal tatasusunan diwakili oleh sepasang kurungan segi empat sama yang mengandungi item tatasusunan, dipisahkan dengan koma, seperti berikut:
var color = ["merah","biru"];
nama var = [];
nilai var = [1,2,]//IE8 dan 3 item sebelumnya, 2 item yang lain tidak disyorkan untuk digunakan
Seperti objek, pembina Array tidak akan dipanggil apabila menggunakan perwakilan literal berangka.
Apabila membaca dan menetapkan nilai tatasusunan, gunakan kurungan segi empat sama dan berikan indeks angka berasaskan 0 bagi nilai yang sepadan, seperti berikut:
warna var = ["merah","biru"]; //Tentukan tatasusunan
makluman(warna[0]); //merah
warna[1] = "hitam" //Ubah suai item 2
warna[2] = "coklat" //Tambahkan
ke-3
Bilangan item dalam tatasusunan disimpan dalam sifat panjangnya, yang sentiasa mengembalikan 0 atau nombor yang lebih besar, seperti ditunjukkan di bawah:
warna var = ["merah","biru"]; //Tentukan tatasusunan
var names=[];
alert(colors.length); //3
makluman(nama.panjang) //0
Perlu diingat bahawa nilai panjang tatasusunan bukan baca sahaja. Jadi, dengan menetapkan nilai ini, anda boleh mengalihkan item dari hujung tatasusunan atau menambah item pada tatasusunan, seperti ini:
warna var = ["merah","biru"];
warna.panjang = 1;
makluman(warna[1]); //tidak ditentukan
Anda juga boleh menggunakan atribut panjang untuk menambahkan data dengan mudah pada penghujung tatasusunan:
warna var = ["merah","biru"];
warna[colors.length] = "hitam"; //Tambah
pada kedudukan 2
warna[colors.length] = "coklat"; //Tambah
pada kedudukan 3
1. Tatasusunan pengesanan
Untuk halaman web atau skop global, anda boleh menggunakan operator instanceof:
if(nilai instanceof Array){
//Lakukan operasi
}
Had operator instanceof ialah skop global Jika halaman web mengandungi berbilang bingkai, akan terdapat lebih daripada dua persekitaran pelaksanaan global. Untuk menyelesaikan masalah ini, ECMAScript5 menambah kaedah Array.isArray(), yang digunakan seperti berikut:
if(Array.isArray(value)){
//Lakukan operasi
}
2. Kaedah penukaran
Memanggil kaedah toString() tatasusunan akan mengembalikan rentetan dipisahkan koma yang digabungkan daripada bentuk rentetan setiap nilai dalam tatasusunan. Dan memanggil valueOf() masih mengembalikan tatasusunan. Seperti yang ditunjukkan di bawah:
warna var = ['merah', 'biru', 'hijau'];
alert(colors.toString()); //merah,biru,hijau
alert(colors.valueOf()); //merah,biru,hijau
alert(warna) //merah,biru,hijau
Kaedah toLocalString(), tiString(), dan valueOf() yang diwarisi oleh tatasusunan semua mengembalikan item tatasusunan dalam bentuk rentetan dipisahkan koma secara lalai. Dan jika anda menggunakan kaedah join(), anda boleh menggunakan pembatas yang berbeza untuk membina rentetan ini. Kaedah join() hanya menerima satu parameter, iaitu rentetan yang digunakan sebagai pemisah, seperti yang ditunjukkan di bawah:
warna var = ['merah', 'biru', 'hijau'];
alert(colors.join(',')); //merah,biru,hijau
alert(colors.join('|')); //merah|biru|hijau
Jika nilai item dalam tatasusunan adalah null atau undefied, nilai akan diwakili oleh rentetan kosong dalam hasil pulangan kaedah join(), toLocalString(), tiString() dan valueOf().
3. Kaedah tindanan
Javascript menyediakan operasi push() dan pop() khusus untuk tatasusunan untuk mencapai tingkah laku seperti tindanan.
Kaedah push() boleh menerima sebarang bilangan parameter, menambahnya pada penghujung tatasusunan satu demi satu dan mengembalikan panjang tatasusunan yang diubah suai. Kaedah pop() melimpahi item terakhir dari penghujung tatasusunan, mengurangkan panjang tatasusunan dan mengembalikan item yang dialih keluar.
var colors = new Array(); //Define array
var count = colors.push("red", "blue"); //Tolak dua item
makluman(kira); //2
count = colors.push("black"); //Tolak item lain
makluman(kira); //3
var item = colors.pop(); //Pop item terakhir
makluman(item); //"hitam"
alert(colors.length); //2
4. Kaedah beratur
Peraturan akses bagi struktur data tindanan ialah LIFO (masuk dahulu keluar terakhir), manakala peraturan akses baris gilir ialah FIFO (masuk dahulu keluar dahulu). Baris gilir menambah item di hujung senarai dan mengalih keluar item di hadapan.
Kaedah shift() mengalih keluar item pertama dalam tatasusunan dan mengembalikan item, panjang-1 tatasusunan. Menggabungkan kaedah push() dan shift(), tatasusunan boleh digunakan seperti baris gilir, seperti ditunjukkan di bawah:
var colors = new Array();
var count = colors.push("merah", "biru");
count = colors.push("hitam");
makluman(kiraan);
var item = colors.shift(); //Dapatkan item pertama
makluman(item); //"merah"
makluman(warna.panjang); //2
ECMAScript juga menyediakan kaedah unshift() untuk tatasusunan. Kaedah unshift() dan shift() melakukan sebaliknya: mereka menambah bilangan item sewenang-wenangnya ke hadapan tatasusunan dan mengembalikan panjang tatasusunan baharu. Oleh itu, menggunakan kaedah unshift() dan shift() bersama-sama, anda boleh mensimulasikan baris gilir dalam arah yang bertentangan, menambah item baharu di hadapan tatasusunan dan mengalih keluar item dari hujung tatasusunan, seperti berikut:
var colors = new Array();
var count = colors.push("merah", "hijau");
makluman(kira); //2
count = colors.unshift("black"); //Tolak item lain
makluman(kira); //3
var item = colors.pop(); //Dapatkan item terakhir
makluman(item) //hijau
alert(colors.length) //2
5. Kaedah penyusunan semula
Sudah terdapat dua kaedah dalam tatasusunan yang boleh digunakan terus untuk menyusun semula: reverse() dan sort(). Kaedah reverse() akan membalikkan susunan item tatasusunan.
nilai var = [2, 1, 3, 4, 5];
values.reverse();
makluman(nilai); //5,4,3,2,1
Secara lalai, kaedah sort() menyusun item tatasusunan dalam tertib menaik, memanggil kaedah toString() setiap item dan membandingkan rentetan untuk menentukan cara mengisih. Walaupun setiap item dalam tatasusunan ialah nilai angka, kaedah sort() membandingkan rentetan.
nilai var = [12, 11, 3, 4, 5];
values.sort();
makluman(nilai); //12,11,3,4,5
Kita boleh lulus fungsi perbandingan sebagai parameter kepada kaedah sort(). Seperti berikut:
fungsi bandingkan(nilai1, nilai2) {
Jika (nilai1 < nilai2) {
Pulangan -1
} lain jika (nilai1 > nilai2) {
pulangkan 1
} lain {
pulangkan 0
}
}
nilai var = [0, 1, 5, 10, 15];
values.sort(compare);
makluman(nilai); //0,1,5,10,15
6. Kaedah operasi
ECMAScript menyediakan banyak kaedah untuk beroperasi pada tatasusunan. Antaranya, kaedah concat() boleh mencipta tatasusunan baharu berdasarkan semua item dalam tatasusunan semasa.
warna var = ["merah", "hijau", "biru"];
var colors2 = colors.concat("kuning", ["hitam", "coklat"]);
alert(warna); //merah,hijau,biru
alert(warna2); //merah, hijau, biru, kuning, hitam, coklat
Kaedah slice() boleh mencipta tatasusunan baharu berdasarkan satu atau lebih item tatasusunan semasa Ia boleh menerima satu atau dua parameter, iaitu kedudukan permulaan dan penamat bagi item yang akan dikembalikan. Jika satu argumen diberikan, mengembalikan semua item dari kedudukan yang ditentukan oleh argumen ke penghujung tatasusunan semasa. Dua parameter mengembalikan semua item bermula pada kedudukan yang ditentukan - tidak termasuk item pada kedudukan akhir. Ambil perhatian bahawa kaedah slip() tidak menjejaskan tatasusunan asal.
var colors=["merah","hijau","biru","hitam","coklat"];
var colors2=colors.slice(1);
var colors3=colors.slice(1,4);
alert(warna2); //hijau,biru,hitam,coklat
makluman(warna3); //hijau,biru,hitam
Slice() kaedah pemadaman: Anda boleh memadam sebarang bilangan item, hanya nyatakan 2 parameter: kedudukan item pertama yang akan dipadamkan dan bilangan item yang akan dipadamkan.
Slice() kaedah sisipan: Anda boleh memasukkan sebarang bilangan item ke dalam kedudukan yang ditentukan dengan hanya menyediakan 3 parameter: kedudukan permulaan, 0 (bilangan item yang akan dipadamkan) dan item yang akan dimasukkan.
Penggantian kaedah slipe(): Anda boleh memasukkan sebarang bilangan item pada kedudukan yang ditentukan dan memadamkan sebarang bilangan item pada masa yang sama Anda hanya perlu menentukan 3 parameter: kedudukan permulaan, bilangan item yang akan dipadamkan dan sebarang nombor item yang hendak dimasukkan.
warna var = ["merah", "hijau", "biru"];
//Padam
var remove = colors.slice(0, 1); //Alih keluar item 1
var colors3 = colors.slice(1, 4);
alert(warna); //hijau,biru
alert(dialih keluar); //merah
//Sisipkan
dikeluarkan = color.slice(1, 0, "kuning", "oren"); //Sisipkan
bermula dari kedudukan 1
alert(warna); //hijau,kuning,oren,biru
alert(dialih keluar); // Tatasusunan kosong
//Ganti
dikeluarkan = color.slice(1, 1,"red","purple"); //Sisipkan
bermula dari kedudukan 1
alert(warna); //hijau,"merah","ungu",oren,biru
alert(dialih keluar); //"kuning"
7. Kaedah kedudukan
ECMAScript5 menyediakan dua kaedah kedudukan untuk tatasusunan: indexOf() dan lastIndexOf(). Kedua-dua kaedah menerima dua parameter: item yang akan ditemui dan indeks pilihan yang menunjukkan tempat untuk memulakan carian. Kaedah indexOf() mencari secara berurutan dari permulaan tatasusunan, dan kaedah lastIndexOf() mencari ke hadapan dari penghujung tatasusunan.
Kedua-dua kaedah mengembalikan kedudukan item untuk ditemui dalam tatasusunan, dan kembalikan -1 jika tidak dijumpai.
nombor var = [1, 2, 3, 4, 5, 4, 3, 2, 1];
alert(numbers.indexOf(4)) //3
alert(numbers.lastIndexOf(4)) //5
alert(numbers.indexOf(4, 4)) //5
alert(numbers.lastIndexOf(4, 4)) //3
8. Kaedah lelaran
ECMAScript5 mentakrifkan 5 kaedah lelaran untuk tatasusunan. Setiap kaedah menerima dua parameter, yang pertama ialah fungsi yang akan diulang, dan yang kedua ialah objek skop fungsi [pilihan].
Fungsi lelaran menerima tiga parameter Yang pertama ialah nilai elemen dalam tatasusunan yang akan diulang, yang kedua ialah kedudukan elemen dalam tatasusunan yang akan diulang dan yang ketiga ialah tatasusunan lelaran itu sendiri.
1. every() menjalankan fungsi yang diberikan pada setiap item dalam tatasusunan Jika fungsi mengembalikan benar untuk setiap item, ia mengembalikan benar
2. filter() menjalankan fungsi yang diberikan pada setiap item dalam tatasusunan dan mengembalikan tatasusunan item yang fungsi itu mengembalikan benar.
3. forEach() menjalankan fungsi yang diberikan pada setiap item dalam tatasusunan Kaedah ini tidak mempunyai nilai pulangan. map() menjalankan fungsi yang diberikan pada setiap item dalam tatasusunan dan mengembalikan hasil setiap panggilan fungsi >
5. some() menjalankan fungsi yang diberikan pada setiap item dalam tatasusunan Jika fungsi mengembalikan benar untuk mana-mana item, ia mengembalikan benar
Pelayar yang disokong oleh kaedah lelaran ini ialah IE9, Firefox2, Safari3, Opera 9.5, chrome
Antara kaedah ini, kaedah yang paling serupa ialah every() dan some(), kedua-duanya digunakan untuk menanya sama ada item dalam tatasusunan memenuhi syarat tertentu. Untuk setiap (), fungsi yang diluluskan mesti mengembalikan benar untuk setiap item sebelum kaedah ini mengembalikan benar jika tidak, ia mengembalikan palsu. Kaedah some() mengembalikan benar selagi fungsi yang diluluskan dalam mengembalikan benar untuk item tertentu dalam tatasusunan.
var num = [1,2,3,4,5,6,7,8,9];
var everyResult = num.every(fungsi(item, indeks, tatasusunan) {
Jika(item > 2) {
kembali benar;
}
});
alert(everyResult); //salah
var someResult = num.some(function(item) {
Jika(item > 2) {
kembali benar;
}
});
alert(someResult); //benar
Filter() verwendet eine angegebene Funktion, um zu bestimmen, ob ein bestimmtes Element im zurückgegebenen Array enthalten ist.
var num = [1,2,3,4,5,4,3,2,1];
var filterResult = num.filter(function(item) {
If(item > 2) {
return true;
}
});
Alert(filterResult); //[3,4,5,4,3]
map() gibt ebenfalls ein Array zurück, und jedes Element in diesem Array ist das Ergebnis der Ausführung der übergebenen Funktion für das entsprechende Element im ursprünglichen Array.
var num = [1,2,3,4,5,4,3,2,1];
var mapResult = num.map(function(item) {
If(item > 2) {
return true;
}
}); //[2,3,6,8,10,8,6,4,2]
forEach() führt die übergebene Funktion für jedes Element im Array aus. Diese Methode hat keinen Rückgabewert und entspricht im Wesentlichen der Verwendung einer for-Schleife zum Durchlaufen eines Arrays.
var num = [1,2,3,4,5,4,3,2,1];
num.forEach(function(item) {
//Vorgang ausführen
});
9. Zusammenführungsmethode
Zwei neue Methoden wurden zu ECMAScript5 hinzugefügt: ReduceRight() und Reduce(). Beide Methoden akzeptieren zwei Parameter: Der erste ist eine Funktion zum Durchlaufen des Arrays. Diese Funktion verfügt über vier Parameter: den vorherigen Wert, den aktuellen Wert, den Index des Elements und das Array-Objekt. Allerdings wird jeder Wert dieser Funktion automatisch als erster Parameter an das nächste Element übergeben. Der zweite wird als Anfangswert des ersten Parameters in der ersten Funktion verwendet.
var nums = [1,2,3,4,5];
var sum = nums.reduce(function(prev, cur, index, array) {
Rückkehr zum vorherigen Stand;
});
alarm(sum);//15