JavaScript で配列の重複排除を実装するにはどうすればよいですか?この記事では、js で配列を重複排除する 3 つの一般的な方法を紹介します。困っている友人は参考にしていただければ幸いです。
以下では、簡単なコード例 を通じて、js での配列重複排除の 3 つの一般的な方法を紹介します。
最初の方法: for ループ (2 回) 新しい配列
アイデア:
1.結果を格納する新しい配列
2。for ループで毎回元の配列から要素を 1 つ取り出し、この要素を使用してループし、結果の配列
3 と比較します。結果の配列に element 要素が含まれていない場合は、それを結果の配列に格納します
//方法一 var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5]; function removeDuplicatedItem(arr) { for(var i = 0; i < arr.length-1; i++){ for(var j = i+1; j < arr.length; j++){ if(arr[i]==arr[j]){ arr.splice(j,1);//console.log(arr[j]); j--; } } } return arr; } arr2 = removeDuplicatedItem(arr); console.log(arr); console.log(arr2);
最初のメソッドは、arr = [1,23,1,1,1,3, の場合、基本的にニーズを満たすことができます。 23,5,6, 7,9,9,8,5] のような単純な配列の場合、型比較を使用するだけで済みますが、配列が非常に長い場合はどうなるでしょうか。この方法で配列を走査すると、配列の長さは n になり、時間計算量は n*n になります。明らかに、最初の方法のパフォーマンスを改善する必要があります。次に 2 番目の方法です。配列の並べ替えを使用して、並べ替えプロセス中に重複する値を削除します。
2 番目の方法: for ループ (1 回) sort() は新しい配列をソートします
元の配列の長さは変更されませんが、文字列による並べ替え 新しい配列を使用して、要素が新しい配列に存在するかどうかを判断し、存在しない場合は、その要素を新しい配列に追加します。
//方法二 var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5]; function removeRepEle(ar) { var ret = [], end;//临时变量用于对比重复元素 ar.sort();//将数重新组排序 end = ar[0]; ret.push(ar[0]); for (var i = 1; i < ar.length; i++) { if (ar[i] != end) {//当前元素如果和临时元素不等则将此元素添加到新数组中 ret.push(ar[i]); end = ar[i]; } } return ret; } arr2 = removeRepEle(arr); console.log(arr);//[ 1, 1, 1, 1, 23, 23, 3, 5, 5, 6, 7, 8, 9, 9 ] console.log(arr2);//[ 1, 23, 3, 5, 6, 7, 8, 9 ]
2 番目の方法には、特定の制限があります。配列が最初にソートされてから重複が削除されるため、最終的に返される結果は、JS 配列の重複排除とソートの結果になります。配列の順序を変更せずに重複を削除する必要がある場合、この方法はお勧めできません。
3 番目の方法 (推奨): for ループ (1 回) new array new object
空のオブジェクトを使用して、新しい配列 格納された要素
//方法三 var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5]; var o={}; var new_arr=[]; for(var i=0;i<arr.length;i++){ var k=arr[i]; if(!o[k]){ o[k]=true; new_arr.push(k); } } console.log(new_arr);
概要: 上記がこの記事の全内容です。皆さんの学習に役立つことを願っています。関連チュートリアルの詳細については、JavaScript ビデオ チュートリアル 、jQuery ビデオ チュートリアル 、bootstrap チュートリアル をご覧ください。
以上がJavaScript で配列の重複排除を実装するにはどうすればよいですか? jsの配列から重複を削除する3つの方法(コード例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。