ホームページ > ウェブフロントエンド > jsチュートリアル > javascript_javascriptスキルで配列から重複要素を削除する方法のまとめ

javascript_javascriptスキルで配列から重複要素を削除する方法のまとめ

WBOY
リリース: 2016-05-16 15:53:22
オリジナル
1235 人が閲覧しました

この記事の例では、JavaScript を使用して配列から重複要素を削除する方法を説明します。皆さんの参考に共有してください。具体的な分析は次のとおりです。

ここでは、フロントエンドの面接でよく聞かれる質問を共有します。この質問は主に、配列内の重複要素を削除するための JavaScript を実装しています。初心者の方のお役に立てれば幸いです

//数组去重的方法
Array.prototype.unique=function(){
  //集中声明变量
  var 
   oldArr=this,
   newArr=[oldArr[0]],
   len=oldArr.length,
   i=1;
  //过滤空数组
  if(!len) return this;
  //过滤重复元素
  for(;i<len;i++){
    newArr.indexOf(oldArr[i])<0 &#63; newArr.push(_this) : ''; 
  }
  //返回过滤后的数组没有影响原数组
  return newArr;
}
var arr=['a','a','b','a','c','d'];
console.log(arr.unique());
//["a", "b", "c", "d", unique: function]

ログイン後にコピー

インターネット上にたくさんあり、私が書いたものはあまり良くありませんが、結局のところ、私が書いたロジックは明確であり、オブジェクト要素に拡張して重複を削除したり、複数の配列を操作したりするなど、ロジックに沿って拡張できます他の人が書いたいくつかのメソッドを包括的に比較できます。

方法 1:

function oSort(arr)
{
  var result ={};
  var newArr=[];
  for(var i=0;i
  {
 if(!result[arr[i]])
 {
   newArr.push(arr[i])
   result[arr[i]]=1
 }
  }
  return newArr
}

ログイン後にコピー

方法 2:

削除する配列 arr を走査し、その要素を別の配列 tmp にそれぞれ入れます。要素が arr に存在しないと判断した後でのみ、要素を tmp に配置できます。
for ...in と IndexOf()

の 2 つの関数が使用されます。
var student = ['qiang','ming','tao','li','liang','you','qiang','tao'];
 function unique(arr){
   // 遍历arr,把元素分别放入tmp数组(不存在才放)
   var tmp = new Array();
   for(var i in arr){
  //该元素在tmp内部不存在才允许追加
  if(tmp.indexOf(arr[i])==-1){
  }
 }
  return tmp;
}

ログイン後にコピー

方法 3:

ターゲット配列 arr の要素の値とキーの位置を交換すると、重複した要素が自動的に削除されます。array('qiang'=>1,'ming'=>1,' tao')。 =>1)

<script type="text/javascript">
  var student = ['qiang','ming','tao','li','liang','you','qiang','tao'];
  function unique(arr){
    var tmp = new Array();
    for(var m in arr){
      tmp[arr[m]]=1;
    }
    //再把键和值的位置再次调换
    var tmparr = new Array();
    for(var n in tmp){
     tmparr.push(n);
    }
   return tmparr;
 }
</script>

ログイン後にコピー

方法 4

/**
* 去除数组重复元素
*/
function uniqueArray(data){ 
  data = data || []; 
  var a = {}; 
  for (var i=0; i<data.length; i++) { 
    var v = data[i]; 
    if (typeof(a[v]) == 'undefined'){ 
      a[v] = 1; 
    } 
  }; 
  data.length=0; 
  for (var i in a){ 
    data[data.length] = i; 
  } 
  return data; 
} 

ログイン後にコピー

方法は似ていますが、3 番目の方法は非常に賢いです~

この記事が皆様の JavaScript プログラミング設計に役立つことを願っています。

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