この記事では、主に JavaScript 配列重複排除アルゴリズムを紹介し、JavaScript 配列重複排除に関連する読み取り、書き込み、走査、比較、並べ替えなどの操作と、アルゴリズムの改善に関連する実装テクニックをサンプルの形でまとめて分析します。必要な方は参考にしてください
この記事では、JavaScript 配列重複排除アルゴリズムを例とともにまとめています。参考のために皆さんと共有してください。詳細は次のとおりです:
テストケース: 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 オブジェクトをハッシュとして使用するtable
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}, ""]
bug: できません区別: 1 と "1"
Modify
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 を使用して配列を並べ替え、次に一時配列を使用して同じ要素の最後の要素を格納します。この方法は純粋な Number 型配列にのみ使用できます
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; }
上記は皆さんのためにまとめたものです。今後も活用していただければ幸いです。
関連記事:
以上がJavaScript 配列重複排除アルゴリズムの例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。