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

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

php中世界最好的语言
php中世界最好的语言オリジナル
2018-05-23 11:46:011538ブラウズ

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

推奨読書:

Vue+better-scrollを使用してアルファベット順のインデックスナビゲーションを実装する方法

Vue WeChatプロジェクトにオンデマンド認証ログインを実装する方法

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

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