ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript 配列重複排除アルゴリズムの例

JavaScript 配列重複排除アルゴリズムの例

一个新手
一个新手オリジナル
2018-05-23 14:56:382471ブラウズ

この記事では、主に 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;
}

上記は皆さんのためにまとめたものです。今後も活用していただければ幸いです。

関連記事:

AjaxでJSONを転送するサンプルコード

ajaxはjsonを使用してデータ送信を実装

重複実装のAjax検証コード

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

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