Dalam JavaScript, array dapat dibuat menggunakan konstruktor array, atau dibuat dengan cepat menggunakan [], yang juga merupakan metode yang disukai. Array adalah prototipe yang diwarisi dari objek, dan tidak memiliki nilai pengembalian khusus untuk TypeOf, itu hanya mengembalikan 'objek'.
1. Array.prototype.slice Metode
Metode irisan array biasanya digunakan untuk mengekstrak fragmen dari array. Namun, ia juga memiliki kemampuan untuk mengubah "array kelas" (seperti argumen dan htmlcollection) menjadi array nyata.
Salinan kode adalah sebagai berikut:
var nodeESArr = array.prototype.slice.call (document.forms);
var argsarr = array.prototype.slice.call (argumen);
Saya ingin tahu mengapa metode slice array memiliki keterampilan seperti itu, dan bagaimana ia diimplementasikan dalam mesin JavaScript? Apakah metode Slice persaudaraan memiliki keterampilan seperti itu?
Dengan rasa ingin tahu, unduh kode sumber mesin V8 JavaScript Google ke area lokal. Alamat unduhan kode sumber V8 adalah: https://github.com/v8/v8.
Temukan "array.prototype.slice" di V8-master/src/array.js:
Salinan kode adalah sebagai berikut:
fungsi arrayslice (start, end) {
Check_object_coercible (ini, "array.prototype.slice");
...
var result = []; // kalimat ini adalah kuncinya
if (end_i <start_i) hasil pengembalian;
if (usesparsevariant (array, len, is_array (array), end_i - start_i)) {
...
Sparseslice (array, start_i, end_i - start_i, len, hasil);
} kalau tidak {
Simpleslice (array, start_i, end_i - start_i, len, hasil);
}
...
hasil pengembalian;
Maka saya kira bahwa metode Simpleslice yang disebut "array kelas" harus digunakan, dan kemudian mencari "SimpleSlice" dalam kode sumber dan menemukan bahwa metode SimpleSlice juga disebut dalam kode sumber array.prototype.splice, dan variabel hasil juga diinisialisasi ke array kosong. Namun, jika Anda ingin menggunakan metode splice untuk mengubah "array kelas" menjadi array nyata, Anda harus meneruskan parameter posisi awal ke 0, yaitu:
Salinan kode adalah sebagai berikut:
var nodeESArr = array.prototype.splice.call (document.forms, 0);
Karena prinsip implementasinya adalah membentuk array baru dengan item array yang dihapus. Jika Anda tertarik, Anda dapat memeriksa implementasi kode sumber array.prototype.splice.
Selain itu, irisan juga dapat mengkloning array:
Salinan kode adalah sebagai berikut:
var arr = [1, 2, 3];
var cloneArr = arr.slice (); // clonearr: [1, 2, 3]
2. Array.prototype.push Metode
Gunakan metode push untuk menggabungkan array:
Salinan kode adalah sebagai berikut:
var arr1 = [1, 'str', {name: 'lang'}];
var arr2 = [2, 'ing'];
Array.prototype.push.Apply (ARR1, ARR2);
// hasil kembali: [1, "str", {name: 'lang'}, 2, "ing"]
3. Array.prototype.sort Metode
Pertama unggah kode:
Salinan kode adalah sebagai berikut:
var arr = ['1', '2', '10', '12'];
arr.sort ();
// Hasil pengembalian: ["1", "10", "12", "2"]
Hasil di atas biasanya bukan yang kita inginkan, jadi bagaimana kita mengurutkan berdasarkan ukuran numerik:
Salinan kode adalah sebagai berikut:
arr.sort (function (a, b) {
mengembalikan a - b;
})
// Hasil pengembalian: ["1", "2", "10", "12"]
Dengan fungsi penyortiran pembanding, Anda dapat menyesuaikan banyak pembanding untuk mencapai penyortiran yang dipersonalisasi.
4. Atribut Panjang
Atribut panjang array tidak hanya baca, yang berarti dapat ditulis. Misalnya, gunakan atribut panjang untuk memotong array:
Salinan kode adalah sebagai berikut:
var arr = [1, 2, 3, 4];
arr.length = 2;
// arr: [1, 2]
arr.length = 0;
// arr: []
Pada saat yang sama, jika atribut panjang meningkat, nilai panjang array akan meningkat, dan tidak terdefinisi digunakan sebagai elemen baru untuk diisi.
Salinan kode adalah sebagai berikut:
var arr = [];
arr.length = 3;
// arr: [tidak terdefinisi, tidak terdefinisi, tidak terdefinisi]
Oke, mari kita selesaikan hari ini. Ini sudah pagi. Jika Anda memiliki penemuan baru di masa depan, Anda akan menambahkannya di sini.
Sebelumnya, saya tidak memiliki kebiasaan menulis blog, tetapi saya hanya terbiasa memasukkan ringkasan saya yang biasa ke dalam catatan Youdaoyun. Saya tidak berharap bahwa perlu beberapa pemikiran untuk menulis pandangan saya, karena saya harus mempertimbangkan bagaimana mengekspresikannya sehingga orang lain dapat lebih memahaminya.
Jika Anda memiliki ekspresi yang salah atau pemahaman yang salah, saya harap semua orang dapat membantu Anda mengoreksi saya.
Juga melampirkan beberapa metode array javascript yang umum digunakan
concat () menggabungkan dua atau lebih array atau lebih dan mengembalikan hasilnya.
gabung () menempatkan semua elemen array ke dalam string. Elemen dipisahkan oleh pembatas yang ditentukan.
pop () menghapus dan mengembalikan elemen terakhir dari array
push () menambahkan satu atau lebih elemen ke ujung array dan mengembalikan panjang baru.
Reverse () Reverse () membalikkan urutan elemen dalam array.
shift () menghapus dan mengembalikan elemen pertama dari array
slice () mengembalikan elemen yang dipilih dari array yang ada
mengurutkan () mengurutkan elemen array
splice () menghapus elemen dan menambahkan elemen baru ke array.
tosource () mengembalikan kode sumber objek
tostring () mengubah array menjadi string dan mengembalikan hasilnya.
Tolocalestring () mengubah array menjadi array lokal dan mengembalikan hasilnya.
unshift () menambahkan satu atau lebih elemen ke awal array dan mengembalikan panjang baru.
valueOf () mengembalikan nilai asli dari objek array