今回は、配列重複排除アルゴリズムの 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; }
以上がJS は配列重複排除アルゴリズムを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。