ホームページ > ウェブフロントエンド > jsチュートリアル > JS は配列重複排除アルゴリズムを実装します

JS は配列重複排除アルゴリズムを実装します

php中世界最好的语言
リリース: 2018-05-12 10:42:32
オリジナル
1825 人が閲覧しました

今回は、配列重複排除アルゴリズムの 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 サイトの他の関連記事に注目してください。

推奨書籍:

JSコールバック関数のユースケースを詳しく解説

React Navigationの実戦での注意点とは

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

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート