1. Indeks dari metode LastIndexof:
Karena IE7 akan melaporkan kesalahan menggunakan IndexOf pada objek array, perlu untuk menulis ulang kompatibilitas.
Salinan kode adalah sebagai berikut:
Array.prototype.LastIndexof (item, index) {
var n = this.length, i = (index == null || index> n-1)? n-1: index;
if (i <0) i = n+i;
untuk (; i> = 0; i--)
if (this [i] === item) // penilaian konsolidar, indexof, lastIndexof
Kembalikan i;
kembali -1;
}
2. Metode Shuffle: Ambil array.
Salinan kode adalah sebagai berikut:
fungsi shuffle (target) {
var i = target.length, j, temp;
untuk (; i> 0; j = parseInt (math.random () * i), x = target [-i], target [i] = target [j], target [j] = x) {}
// Asumsi panjang = 10, lalu setelah math.random ()*10-> [0,10), parseint, [0,9], pilih secara acak dan pertukaran dengan item terakhir dalam array. Loop kedua, [0,8], bertukar dengan jangka waktu kedua dari array.
target pengembalian;
}
3. Proses Ratakan Array: Ratakan, kembalikan array satu dimensi
Salinan kode adalah sebagai berikut:
fungsi flatten (arr) {
var result = [];
arr.foreach (function (item) {
if (array.isArray (item)) result.concat (flatten (item));
lain result.push (item);
});
hasil pengembalian;
}
4. Metode Unik: Pengoperasian Deduplikasi Array
Metode ini adalah pewawancara yang ingin ditanyakan, karena memiliki beberapa metode implementasi, yang paling umum adalah dua untuk loop. Hal paling umum yang saya tahu adalah menggunakan objek A dan kemudian A untuk array array arr. Setiap kali jika (ARR [i]]) ada, dan jika tidak ada, itu akan didorong ke hasil array yang baru Anda tentukan. Keberadaan terbukti, berulang, jadi tidak perlu mendorong ke hasil. Solusi ini, untuk "123", 123, akan dianggap sama. Bahkan, satu adalah string dan yang lainnya adalah angka, dan tidak boleh dianggap sama.
Jadi metode berikut muncul: [1, "1", "1"]
Salinan kode adalah sebagai berikut:
if ((typeof obj [array [i]])! = (typeof array [i]) || obj [array [i]]! = array [i]) {
A.push (array [i]);
obj [array [i]] = array [i];
}
// Pertama menentukan apakah jenisnya sama. Jika mereka sama, tentukan apakah nilainya sama. Jika mereka tidak setara, mereka akan diselamatkan. Jika mereka sama, mereka akan membuktikan bahwa nilai ini telah ada sebelumnya.
Jika jenisnya berbeda, ada dua situasi di sini.
Dalam kasus pertama, OBJ telah menyimpan data ini sebelumnya, misalnya: OBJ [123] = 123, sekarang array [i] = "123". Pada saat ini, tipe OBJ [array [i]]) adalah angka, dan tipe array [i] adalah string, sehingga disimpan dalam array.
Kasus kedua adalah bahwa OBJ belum menyimpan data ini, misalnya: array [i] = "123", obj ["123"] = tidak terdefinisi. Pada saat ini, tipe OBJ [array [i]]) adalah tipe yang tidak terdefinisi = tidak terdefinisi, yang tidak sama dengan jenis array [i] dan disimpan dalam array.
Metode ini dapat menyelesaikan situasi di mana string dan angka adalah sama, tetapi tidak dapat menyelesaikan situasi di mana objeknya sama. Misalnya: a = {1: 2}, b = {2: 1};
Saat loop pertama, ketik obj [a] = tidak terdefinisi, ketik A = objek. Deposit Obj [a] = a. Faktanya, obj [objek] = a;
Pada loop kedua, tipe OBJ [b] sama dengan tipe obj [objek], yang sebenarnya tipe A = objek, tipe B = objek. Oleh karena itu, ia memasuki obj [array [i]]! = Array [i] |, yaitu, obj [b]-> obj [objek]-> a! = b, begitu disimpan
obj [b] = b; yaitu, obj [objek] = b; menimpa OBJ [objek] = a;
Dalam hal ini, semua objek akan muncul, dan hanya nilai objek terakhir yang akan disimpan.
Saat mempertimbangkan objek, saya menggunakan metode berikut:
Salinan kode adalah sebagai berikut:
untuk (var i = 0; i <temp.length; i ++) {
untuk (var j = i+1; j <temp.length; j ++) {
if (temp [i] === temp [j]) {
Temp.Splice (J, 1);
J--;
}
}
}
kembalikan suhu;
5. Penyortiran Array: Metode Sortir. Jika objek yang ingin Anda urutkan adalah objek, Anda dapat menulis perbandingan (a, b) {if (a.age> b.age) return 1; else return -1;}, a.sort (bandingkan).
6.Min Mengembalikan nilai minimum array: return math.min.apply (0, array);
7. UNSHIFT tidak mengembalikan panjang array di bawah IE6,7.
Salinan kode adalah sebagai berikut:
if ([]. unshift (1)! == 1) // Tambahkan item dari yang sebelumnya ke array kosong, browser lain akan mengembalikan 1, sementara IE6 dan 7 tidak akan mengembalikan panjang array. Jalankan pernyataan if
{
var _unshift = array.prototype.unshift; // fungsi pembajakan.
Array.prototype.unshift = function () {
_unshift.Apply (ini, argumen);
kembalikan ini.length;
}
}
8. Lapisan dalam kasus satu parameter, parameter kedua default IE8 dan versi berikut adalah 0, sementara browser lainnya adalah panjang array.
Salinan kode adalah sebagai berikut:
if ([1,2,3] .splice (1) .length == 0) // IE8 dan versi berikut akan sama dengan 0, dan versi lainnya akan sama dengan 3, masukkan IF jika
{
var _splice = array.prototype.splice;
Array.prototype.splice = function (a) {
if (arguments.length == 1) // jika hanya ada satu parameter
{
return _splice.call (ini, a, this.length);
}kalau tidak{
return _splice.apply (ini, argumen);
}
}
}
Metode ini akan mengubah opsi array, jadi dorong, pop, shift, dan unshift dari array (metode ini juga akan memodifikasi opsi array) akan memanggil metode ini untuk mengimplementasikannya.
Berikut adalah tempat yang perlu diperhatikan:
Salinan kode adalah sebagai berikut:
var color = array baru ('merah', 'biru', 'kuning', 'hitam');
var color2 = color.splice (2,0, 'brown', 'pink');
waspada (warna); // Merah, Biru, Coklat, Merah Muda, Kuning, Hitam, pada Opsi Kuning, Mulailah Operasi, Jika Hapus 0, Opsi yang Ditambahkan dimasukkan sebelum Kuning. Ingat.
Di sini, silakan periksa perbedaan antara sambungan dan irisan, nilai pengembalian, dan dampaknya pada array asli.
Di atas adalah versi sederhana dari konten bagian ini. Meskipun ramping, poin -poin utama adalah segalanya. Saya harap ini akan membantu semua orang saat membaca bagian ini.