Rumah >hujung hadapan web >tutorial js >Lima cara untuk mengalih keluar pendua daripada kemahiran JavaScript arrays_javascript

Lima cara untuk mengalih keluar pendua daripada kemahiran JavaScript arrays_javascript

WBOY
WBOYasal
2016-05-16 15:33:301170semak imbas

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});
}
3. Saya mengambil masa yang lama untuk memahami perkara ini Walaupun gelung j berterusan di sini, nilai i telah berubah. Ia bersamaan dengan gelung i baharu:

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});
}
4 Pastikan semua dalam tatasusunan baharu adalah unik

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});
}
5. Gunakan atribut objek

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});;
 }
3 sifat objek tatasusunan javascript

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);
Kod ini juga mentakrifkan tatasusunan yang mengandungi 10 nombor Ia boleh dilihat daripada pernyataan amaran bahawa panjangnya ialah 10. Kemudian elemen dengan indeks 15 digunakan dan diberikan nilai 15, iaitu, arr[15]=34 Pada masa ini, pernyataan amaran digunakan untuk mengeluarkan panjang tatasusunan, dan hasilnya ialah 16. Walau apa pun, ini adalah ciri yang mengejutkan untuk pembangun yang terbiasa dengan pengaturcaraan menaip kuat. Sebenarnya, panjang awal tatasusunan yang dicipta menggunakan Tatasusunan() baharu ialah 0. Ia adalah pengendalian elemen tidak ditentukan yang menyebabkan panjang tatasusunan berubah.

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 prototaip

Mengembalikan 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数组对象的三个属性,希望大家喜欢。

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn