プログラムを作成する過程で、配列から重複した要素を削除する必要が生じることがよくあります。実はこの機能の実装は難しくありません。 小さな配列の場合は、二重ループを使用してこれを実現できます。 しかし、配列が比較的大きい場合、その中には数万の要素が含まれます。そうなると二重循環を使うことは非常に非効率になります。 以下では、js の機能を使用して、配列から重複要素を削除する効率的なメソッドを作成します。 コードをコピー コードは次のとおりです。 関数は固有です。 (データ) { <br>data = データ || []; <br>var a = {}; (var i=0; i<data.length i>var v = データ[i] ; <br>if (typeof(a[v]) == '未定義'){ <br>a[v] = 1; <br>data.length=0 ; <br>for (var i in a){ <br>data[data.length] = i; <br>関数 test(){ <br>var arr = [ 9,1,3,8,7,7,6,6,5,7,8,8,7,4,3,1]; var arr1 = unique(arr); alert(arr1 .join(",")); <br>} <br>test(); <br><br> <br>出力結果: <br>9, 3,8 ,7,6,5,4 <br>JS 配列の重複排除は、配列内の重複要素を削除することです: <br><br><br><br><br>コードをコピー<br></data.length> </div> <br> コードは次のとおりです。 <br><br> <br>Array.prototype.delRepeat=function(){ <div class="codetitle">var newArray=new Array(); <span>var len=this.length; >for (var i =0;i<len style="CURSOR: pointer" data="61380" class="copybut" id="copybut61380" onclick="doCopy('code61380')">for(var j=i 1;j<len>if(this[i]===this[j]) { j = i; } </len></len></span>newArray.push(this[i]) </div>} <div class="codebody" id="code61380"> <br> <br> しかし、別の for ループに埋め込まれた for ループがあることは明らかです。大量のデータを処理する場合、非常に時間がかかるはずです。検索と専門家のアドバイスを経て、新しいメソッドが最適化されました。<br><br><br><br><br>コードをコピーします<br><br><br> コードは次のとおりです:<br><br> <br>Array.prototype.delRepeat=function(){ <br> var newArray=[]; </div>var PrimaryTable = {}; <br>for (var i = 0, item; (item= this[i]) != null; i ) { <br>if (!provisionalTable[ item]) { <div class="codetitle">newArray.push(item ; この値は、provisionalTable オブジェクトのキー値として使用されます。対応する値が存在しない場合は、この配列の値が新しい配列にプッシュされます。 <span> 効率は向上しましたが、バグがあります。たとえば、配列 [6, "6"] の 1 つが削除されると仮定します。悲劇と解決策を探しています。 <a style="CURSOR: pointer" data="39354" class="copybut" id="copybut39354" onclick="doCopy('code39354')"><u></u></a></span> </div>