Deduplikasi tatasusunan Javascript ialah keperluan yang agak biasa, dan terdapat banyak penyelesaian yang boleh didapati dalam talian Di bawah, editor telah menyusun panduan untuk anda menyahduplikasikan kaedah yang sama , mula-mula memperkenalkan kepada anda idea pelaksanaan yang mudah.
Perkara:
Lintas tatasusunan dan bandingkan satu demi satu Jika perbandingan adalah sama, padamkan
berikut
Lintas tatasusunan, bandingkan satu demi satu, langkau pendua sebelumnya dan letakkan pendua yang berbeza ke dalam tatasusunan baharu
Letakkan mana-mana elemen tatasusunan ke dalam tatasusunan baharu, rentas elemen tatasusunan yang tinggal, pilih mana-mana satu, bandingkan satu persatu dengan elemen tatasusunan baharu, jika terdapat perbezaan, masukkan ke dalam tatasusunan baharu.
Lintas tatasusunan, ambil elemen sebagai atribut objek dan tentukan sama ada atribut itu wujud
1. Padamkan pendua berikut:
function ov(arr){ //var a=((new Date).getTime()) for(var i=;i<arr.length;i++) for(var j=i+;j<arr.length;j++) if(arr[i]===arr[j]){arr.splice(j,);j--;} //console.info((new Date).getTime()-a) return arr.sort(function(a,b){return a-b}); }
2. Ini adalah kaedah konvensional, yang lebih mudah untuk difahami
function ov(a) { //var a=((new Date).getTime()) var b = [], n = a.length, i, j; for (i = ; i < n; i++) { for (j = i + ; j < n; j++) if (a[i] === a[j]){j=false;break;} if(j)b.push(a[i]); } //console.info((new Date).getTime()-a) return b.sort(function(a,b){return a-b}); }
function ov(a) { //var a=((new Date).getTime()) var b = [], n = a.length, i, j; for (i = ; i < n; i++) { for (j = i + ; j < n; j++) if (a[i] === a[j])j=++i b.push(a[i]);} //console.info((new Date).getTime()-a) return b.sort(function(a,b){return a-b}); }
function ov(ar){ //var a=((new Date).getTime()) var m=[],f; for(var i=;i<ar.length;i++){ f=true; for(var j=;j<m.length;j++) if(ar[i]===m[j]){f=false;break;}; if(f)m.push(ar[i])} //console.info((new Date).getTime()-a) return m.sort(function(a,b){return a-b}); }
function ov(ar){ // var a=(new Date).getTime() var m,n=[],o= {}; for (var i=;(m= ar[i])!==undefined;i++) if (!o[m]){n.push(m);o[m]=true;} // console.info((new Date).getTime()-a) return n.sort(function(a,b){return a-b});; }
1. atribut panjang
Atribut Length mewakili panjang tatasusunan, iaitu bilangan elemen di dalamnya. Oleh kerana indeks tatasusunan sentiasa bermula dari 0, had atas dan bawah tatasusunan ialah: 0 dan panjang-1 masing-masing. Tidak seperti kebanyakan bahasa lain, sifat panjang tatasusunan JavaScript adalah berubah-ubah, yang memerlukan perhatian khusus. Apabila atribut panjang ditetapkan lebih besar, keadaan keseluruhan tatasusunan sebenarnya tidak berubah, hanya atribut panjang menjadi lebih besar apabila atribut panjang ditetapkan lebih kecil daripada asal, elemen dalam tatasusunan asal dengan indeks lebih besar daripada atau sama dengan panjang akan Semua nilai hilang. Berikut ialah contoh yang menunjukkan perubahan atribut panjang:
var arr=[12,23,5,3,25,98,76,54,56,76];
//Mentakrifkan tatasusunan yang mengandungi 10 nombor
alert(arr.length); //Paparkan panjang tatasusunan 10
arr.length=12; //Tingkatkan panjang tatasusunan
alert(arr.length); //Menunjukkan bahawa panjang tatasusunan telah menjadi 12
alert(arr[8]); //Paparkan nilai elemen ke-9, iaitu 56
arr.length=5; //Kurangkan panjang tatasusunan kepada 5, dan elemen dengan indeks sama dengan atau melebihi 5 dibuang
alert(arr[8]); //Tunjukkan bahawa elemen ke-9 telah menjadi "tidak ditentukan"
arr.length=10; //Pulihkan panjang tatasusunan kepada 10
alert(arr[8]); //Walaupun panjangnya dipulihkan kepada 10, elemen ke-9 tidak boleh dipulihkan dan memaparkan "undefined"
Daripada kod di atas kita dapat melihat dengan jelas sifat atribut panjang. Tetapi objek panjang bukan sahaja boleh ditetapkan secara eksplisit, ia juga boleh diubah suai secara tersirat. Anda boleh menggunakan pembolehubah tidak diisytiharkan dalam JavaScript Begitu juga, anda juga boleh menggunakan elemen tatasusunan yang tidak ditentukan (merujuk kepada elemen dengan indeks yang lebih besar daripada atau sama dengan panjang). nilai indeks elemen yang digunakan. Contohnya, kod berikut:
var arr=[12,23,5,3,25,98,76,54,56,76]; alert(arr.length); arr[15]=34; alert(arr.length);
Seperti yang anda boleh lihat daripada pengenalan di atas, atribut panjang sangat ajaib Anda boleh menggunakannya untuk menambah atau mengurangkan kapasiti tatasusunan dengan mudah. Oleh itu, pemahaman yang mendalam tentang atribut panjang akan membantu menggunakannya secara fleksibel semasa proses pembangunan.
2. atribut prototaipMengembalikan rujukan kepada prototaip jenis objek. Sifat prototaip adalah biasa untuk dibantah.
objectName.prototype
Parameter objectName ialah nama objek objek.
Penerangan: Gunakan atribut prototaip untuk menyediakan satu set fungsi asas kelas objek. Contoh baharu objek "mewarisi" operasi yang diberikan kepada prototaip objek.
Untuk objek tatasusunan, contoh berikut menggambarkan penggunaan atribut prototaip.
Tambahkan kaedah pada objek tatasusunan yang mengembalikan nilai elemen maksimum dalam tatasusunan. Untuk mencapai ini, isytiharkan fungsi, tambahkannya pada Array.prototype, dan gunakannya.
该代码执行后,y 保存数组 x 中的最大值,或说 6。
3、constructor 属性
表示创建对象的函数。
object.constructor //object是对象或函数的名称。
说明:constructor 属性是所有具有 prototype 的对象的成员。它们包括除 Global 和 Math 对象以外的所有 JScript 固有对象。constructor 属性保存了对构造特定对象实例的函数的引用。
例如:
x = new String("Hi"); if (x.constructor == String) // 进行处理(条件为真)
或
function MyFunc { // 函数体。 } y = new MyFunc; if (y.constructor == MyFunc) // 进行处理(条件为真)
以上内容就是关于本文给大家介绍的JavaScript数组去重的五种方法及javascript数组对象的三个属性,希望大家喜欢。