ホームページ > 記事 > ウェブフロントエンド > JS配列重複排除アルゴリズムを実装する方法
今回は、JS 配列重複排除アルゴリズムの実装方法と、JS 配列重複排除アルゴリズムを実装する際の注意点について説明します。実際のケースを見てみましょう。
テストケース:
arr = ["1",3,"1",1,4,5,1,"2",5,1,{"name":"li","age": 20},2,4,3,{"name":"li","age":20},""];
方法 1: 一時配列と IndexOf の助けを借りて、アルゴリズムの複雑さは: O(n^2)
function unique1(arr){ var temp = []; for(var i=0; i<arr.length; i++){ if(temp.indexOf(arr[i]) == -1){ temp.push(arr[i]); } } return temp; }
テスト結果:
unique1(arr): ["1", 3, 1, 4, 5, "2", Object { name="li", age= 20} , 2, Object { name="li", age=20}, ""]
bug オブジェクトを区別できません
方法 2: JavaScript のObject オブジェクトをハッシュ テーブルとして使用する
function unique2(arr){ var temp=[]; var hash={}; for(var i=0; i<arr.length;i++){ if(!hash[arr[i]]){ hash[arr[i]]=true; temp.push(arr[i]); } } return temp; }
テスト結果:
unique2(arr): ["1", 3, 4, 5, "2", Object { name="li", age=20}, ""]
バグ:区別できません: 1 と "1"
変更
function unique2(arr){ var temp=[]; var hash={}; for(var i=0; i<arr.length;i++){ var item = arr[i]; var key = typeof(item)+item; if(!hash[key]){ hash[key]=true; temp.push(arr[i]); } } return temp; }
テスト結果:
unique2(arr): ["1", 3, 1, 4, 5, "2", Object { name="li", age =20}, 2, ""]
方法 3: 最初に sort を使用して array を並べ替え、次に一時配列を使用して同じ要素の最後の要素を保存します。 この方法は次の場合にのみ使用できます。純粋な数値型配列
function unique3(arr){ arr.sort(function(a,b){ return a-b; }); var temp = []; for(var i=0;i<arr.length;i++){ if(arr[i] !== arr[i+1]){ temp.push(arr[i]); } } return temp; }
この記事のケースを読んだ後は、この方法を習得したと思います。さらに興味深い情報については、php 中国語 Web サイトの他の関連記事に注目してください。
推奨読書:
以上がJS配列重複排除アルゴリズムを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。