Heim > Web-Frontend > js-Tutorial > Ein Beispiel für die JS-Implementierung der Array-Deduplizierung

Ein Beispiel für die JS-Implementierung der Array-Deduplizierung

零下一度
Freigeben: 2017-07-16 14:52:48
Original
1417 Leute haben es durchsucht

Eine Frage, auf die sich Front-End-Interviewer vorbereiten müssen: So entfernen Sie Duplikate aus dem Array von Javascript. Soweit ich weiß, haben Baidu, Tencent, Shanda usw. diese Frage alle in Interviews gestellt. Diese Frage scheint einfach, aber tatsächlich birgt sie versteckte Gefahren. Bei dem Test geht es nicht nur um die Realisierung dieser Funktion, sondern auch um Ihr tiefgreifendes Verständnis für die Ausführung von Computerprogrammen.

Methode 1:

Verwenden Sie Splice, um direkt am ursprünglichen Array zu arbeiten

Doppel- Layer-Schleife, äußeres Schleifenelement. Wenn der Wert

in der inneren Schleife verglichen wird, löschen Sie diesen Wert, wenn der Wert gleich ist

Hinweis: Nach dem Löschen des -Elements , Sie müssen die Länge des Arrays ändern Auch minus 1.

Array.prototype.distinct = function (){
  var arr = this,
    i,
    j,
    len = arr.length;
  for(i = 0; i < len; i++){
    for(j = i + 1; j < len; j++){
      if(arr[i] == arr[j]){
        arr.splice(j,1);
        len--;
        j--;
      }
    }
  }
  return arr;
};
var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,];
var b = a.distinct();
console.log(b.toString()); //1,2,3,4,5,6,56
Nach dem Login kopieren

Vorteile: einfach und leicht zu verstehen

Nachteile: hohe Speichernutzung, langsame Geschwindigkeit

Methode 2:

Doppelschichtige Schleife, Elemente der äußeren Schleife, Werte während der inneren Schleife vergleichen

Wenn es dieselben Werte gibt, Überspringen Sie sie, wenn nicht, verschieben Sie sie in das Array

Array.prototype.distinct = function(){
  var arr = this,
    result = [],
    i,
    j,
    len = arr.length;
  for(i = 0; i < len; i++){
    for(j = i + 1; j < len; j++){
      if(arr[i] === arr[j]){
        j = ++i;
      }
    }
    result.push(arr[i]);
  }
  return result;
}
var arra = [1,2,3,4,4,1,1,2,1,1,1];
arra.distinct();       //返回[3,4,2,1]
Nach dem Login kopieren

Methode 3: Verwenden Sie die Attribute des Objekts, um Duplikate zu entfernen, wenn sie nicht die gleichen Eigenschaften haben können

Array.prototype.distinct = function (){
  var arr = this,
    i,
    obj = {},
    result = [],
    len = arr.length;
  for(i = 0; i< arr.length; i++){
    if(!obj[arr[i]]){  //如果能查找到,证明数组元素重复了
      obj[arr[i]] = 1;
      result.push(arr[i]);
    }
  }
  return result;
};
var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,];
var b = a.distinct();
console.log(b.toString()); //1,2,3,4,5,6,56
Nach dem Login kopieren

Methode 4: ArrayRekursionDuplikation entfernen

Rekursive Idee verwenden

Erst sortieren und dann am Ende vergleichen, dann löschen


Array.prototype.distinct = function (){
  var arr = this,
    len = arr.length;
  arr.sort(function(a,b){    //对数组进行排序才能方便比较
    return a - b;
  })
  function loop(index){
    if(index >= 1){
      if(arr[index] === arr[index-1]){
        arr.splice(index,1);
      }
      loop(index - 1);  //递归loop函数进行去重
    }
  }
  loop(len-1);
  return arr;
};
var a = [1,2,3,4,5,6,5,3,2,4,56,4,1,2,1,1,1,1,1,1,56,45,56];
var b = a.distinct();
console.log(b.toString());    //1,2,3,4,5,6,45,56
Nach dem Login kopieren

Methode 5: Verwenden Sie indexOf und forEach


Array.prototype.distinct = function (){
  var arr = this,
    result = [],
    len = arr.length;
  arr.forEach(function(v, i ,arr){    //这里利用map,filter方法也可以实现
    var bool = arr.indexOf(v,i+1);    //从传入参数的下一个索引值开始寻找是否存在重复
    if(bool === -1){
      result.push(v);
    }
  })
  return result;
};
var a = [1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,3,3,3,3,3,3,3,2,3,3,2,2,1,23,1,23,2,3,2,3,2,3];
var b = a.distinct();
console.log(b.toString());  //1,23,2,3
Nach dem Login kopieren

Methode 6: Verwenden Sie den ES6-Satz

Legen Sie die Datenstruktur fest, die einem Array ähnelt, und die Werte seiner Mitglieder sind alle eindeutig.

Verwenden Sie Array.from, um die Set-Struktur in ein Array umzuwandeln


function dedupe(array){
  return Array.from(new Set(array));
}
dedupe([1,1,2,3]) //[1,2,3]
Nach dem Login kopieren

Erweitern Sie den Operator(...) für den internen Gebrauch for...of-Schleife

let arr = [1,2,3,3];
let resultarr = [...new Set(arr)];  
console.log(resultarr); //[1,2,3]
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonEin Beispiel für die JS-Implementierung der Array-Deduplizierung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage