ホームページ  >  記事  >  ウェブフロントエンド  >  JS配列重複排除アルゴリズムを実装する方法

JS配列重複排除アルゴリズムを実装する方法

php中世界最好的语言
php中世界最好的语言オリジナル
2018-05-31 10:17:251362ブラウズ

今回は、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: JavaScriptObject オブジェクトをハッシュ テーブルとして使用する

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 サイトの他の関連記事に注目してください。

推奨読書:

Angularを操作してデータリクエストを実装する方法

ノードを操作し、非同期を使用して同時実行性を制御する方法

以上がJS配列重複排除アルゴリズムを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。