Yang pertama adalah metode yang lebih konvensional
Ide:
1. Bangun hasil penyimpanan array baru
2. Ambil elemen dari array asli dalam siklus untuk, bandingkan dengan array dengan siklus elemen ini dengan hasil elemen ini
3. Jika tidak ada elemen seperti itu dalam array hasil, itu disimpan dalam array
Salin kode kode sebagai berikut:
Array.prototype.unique1 = function () {
var res = [ini [0]];
untuk (var i = 1; i <this.length; i ++) {
var repeat = false;
untuk (var j = 0; j <res.length; j ++) {
if (this [i] == res [j]) {
Ulangi = true;
Merusak;
}
}
if (! ulangi) {
res.push (ini [i]);
}
}
Return Res;
}
Var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
Alert (arr.unique1 ());
Metode kedua lebih efisien daripada metode di atas
Ide:
1. Urutkan array asli terlebih dahulu
2. Periksa apakah elemen pertama dalam array asli sama dengan elemen terakhir dalam array hasil.
3. Jika berbeda, simpan elemen ke dalam array hasil
Salin kode kode sebagai berikut:
Array.prototype.unique2 = function () {
this.sort ();
var res = [ini [0]];
untuk (var i = 1; i <this.length; i ++) {
if (this [i]! == res.length -1]) {
res.push (ini [i]);
}
}
Return Res;
}
Var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
Alert (arr.unique2 ());
Metode kedua juga akan memiliki batasan tertentu, karena penyortiran sebelum pengembalian, hasil pengembalian terakhir dari pengembalian terakhir juga diurutkan. Jika urutan array diperlukan untuk tidak mengubah pesanan, maka metode ini tidak dapat diambil.
Metode ketiga (disarankan)
Ide:
1. Buat hasil penyimpanan array baru
2. Buat objek kosong
3. Saat siklus, ambil elemen dan objek setiap kali membandingkannya.
Catatan: Mengenai cara membandingkan, ambil elemen dari array asli dan kemudian mengakses atribut ini di objek.
Salin kode kode sebagai berikut:
Array.prototype.unique3 = function () {
var res = [];
var json = {};
untuk (var i = 0; i <this.length; i ++) {
if (! json [ini [i]]) {
res.push (ini [i]);
json [ini [i]] = 1;
}
}
Return Res;
}
var arr = [112,112,34, 'halo', 112,112,34, 'halo', 'str', 'str1'];
Peringatan (arr.unique3 ());