Rumah >hujung hadapan web >tutorial js >Kaedah yang disyorkan untuk mengalih keluar nilai pendua daripada tatasusunan dalam kemahiran JavaScript_javascript
Penyahduplikasi tatasusunan ialah keperluan biasa Kami akan mempertimbangkan penyahduplikasian tatasusunan daripada jenis yang sama. Perkara utama adalah untuk menjelaskan idea dan mempertimbangkan prestasi. Kaedah berikut pada asasnya tersedia di Internet, dan hanya diringkaskan secara ringkas di sini.
Perkara:
1. Lintas tatasusunan dan bandingkan satu demi satu Jika perbandingannya sama, padamkan
berikut
2. Lintas tatasusunan, bandingkan satu persatu dan langkau pendua sebelumnya jika ia tidak sama, masukkannya ke dalam tatasusunan baharu
3. Ambil mana-mana elemen tatasusunan dan masukkan ke dalam tatasusunan baharu, rentas elemen tatasusunan yang tinggal, ambil mana-mana satu, bandingkan satu persatu dengan unsur tatasusunan baharu, jika terdapat perbezaan, masukkan ke dalam tatasusunan baharu.
4. Lintas tatasusunan, ambil elemen sebagai atribut objek dan tentukan sama ada atribut itu wujud
1. Padamkan pendua berikut:
function ov1(arr){ //var a1=((new Date).getTime()) for(var i=0;i<arr.length;i++) for(var j=i+1;j<arr.length;j++) if(arr[i]===arr[j]){arr.splice(j,1);j--;} //console.info((new Date).getTime()-a1) return arr.sort(function(a,b){return a-b}); }
2. Ini adalah kaedah konvensional, yang lebih mudah untuk difahami
function ov2(a) { //var a1=((new Date).getTime()) var b = [], n = a.length, i, j; for (i = 0; i < n; i++) { for (j = i + 1; j < n; j++) if (a[i] === a[j]){j=false;break;} if(j)b.push(a[i]); } //console.info((new Date).getTime()-a1) return b.sort(function(a,b){return a-b}); }
function ov3(a) { //var a1=((new Date).getTime()) var b = [], n = a.length, i, j; for (i = 0; i < n; i++) { for (j = i + 1; j < n; j++) if (a[i] === a[j])j=++i b.push(a[i]);} //console.info((new Date).getTime()-a1) return b.sort(function(a,b){return a-b}); }
function ov4(ar){ //var a1=((new Date).getTime()) var m=[],f; for(var i=0;i<ar.length;i++){ f=true; for(var j=0;j<m.length;j++) if(ar[i]===m[j]){f=false;break;}; if(f)m.push(ar[i])} //console.info((new Date).getTime()-a1) return m.sort(function(a,b){return a-b}); }
function ov5(ar){ // var a1=(new Date).getTime() var m,n=[],o= {}; for (var i=0;(m= ar[i])!==undefined;i++) if (!o[m]){n.push(m);o[m]=true;} // console.info((new Date).getTime()-a1) return n.sort(function(a,b){return a-b});; }