Erkennen, ob ein Array Duplikate in JavaScript enthält

Legen Sie Sammlungen, Gleichheit für Objekte, die Kartenarray-Methode und mehr fest

In diesem Beitrag werden wir uns mit der Herausforderung befassen, festzustellen, ob ein Array Duplikate enthält.

Gleichheit zwischen Primitiven und Objekten

Was ist ein doppelter Wert?

Für primitive Werte ist dies offensichtlich. Nehmen Sie zum Beispiel das folgende Array von Zeichenfolgen.

['A', 'B', 'B', 'C']

Was ist mit Objekten? Überprüfen Sie das nächste Array.

[{ char: 'A'}, { char: 'A'}]

{ char: 'A'} !== { char: 'A'}
//true

Erkennen von Duplikaten in Arrays von Grundelementen

Denken Sie daran, dass wir in JavaScript neben Arrays auch SetSammlungen haben.

Sets sind Sammlungen eindeutiger Werte.

Wie Sie verstehen können, sind Werte in einer SetSammlung eindeutig . Wir können das Array einfach in ein Array umwandeln Setund eine neue Sammlung ohne Duplikate erstellen. Dann können wir die Größe der SetSammlung mit der Größe des ursprünglichen Arrays vergleichen und feststellen, ob es Duplikate enthält.

Hier ist, wie wir es machen können.

const arr = [1, 1, 1, 2, 3];
const set = new Set(arr);
const hasDuplicates = set.size < arr.length;
console.log(hasDuplicates)
//true

Die lengthEigenschaft erhält die Größe des Arrays.

Die sizeEigenschaft ruft die Größe der SetSammlung ab.

Erkennen von Duplikaten in Arrays von Objekten

Was ist mit Objekten? Funktioniert die vorherige Logik auch für Objekte?

Lass es uns versuchen.

const arr = [{char: 'A'}, {char: 'A'}];
const set = new Set(arr);
const hasDuplicates = set.size < arr.length;
console.log(hasDuplicates)
//false

Was können wir dann tun?

Wir können zum Beispiel ein Objekt in eine JSON-Zeichenfolge umwandeln. Zwei Objekte mit denselben Eigenschaften und Speichern derselben Werte erzeugen dieselbe JSON-Zeichenfolge. Überprüfen Sie, wie wir das mit der JSON.stringifyFunktion machen können.

const obj1 = { char: 'A' };
const obj2 = { char: 'A' };
const jsonObj1 = JSON.stringify(obj1);
//{"char":"A"}
const jsonObj2 = JSON.stringify(obj2);
//{"char":"A"}
console.log(obj1 === obj2);
//false
console.log(jsonObj1 === jsonObj2);
//true

Wie können wir diese Transformation von einem Array von Objekten zu einem Array von JSON-Strings durchführen?

Die mapArray-Methode konvertiert ein Array von Werten mithilfe einer Zuordnungsfunktion in ein neues Array.

Was ist die Mapping-Funktion in unserem Fall?

Das stimmt. Die Zuordnungsfunktion ist in diesem Fall die JSON.stringify. Übergeben wir es an die Kartenmethode und überprüfen das Ergebnis.

const arr = [{char: 'A'}, {char: 'A'}];
const jsonArr = arr.map(JSON.stringify);
console.log(jsonArr);
//[
//"{"char":"A"}",
//"{"char":"A"}"
//]

const arr = [{char: 'A'}, {char: 'A'}];
const set = new Set(arr.map(JSON.stringify));
const hasDuplicates = set.size < arr.length;
console.log(hasDuplicates)
//true

OK. Dies ist noch einfacher als das, was wir bereits getan haben. Anstatt neue SetObjekte zu erstellen, erstellen wir neue SetIDs. Dieses Set enthält nur die eindeutigen IDs.

Mit wem können wir eine Liste von Objekten in eine Liste von IDs konvertieren?

Ja, einfach mit der mapArray-Methode.

const arr = [
  {id: 1, name: 'Joker'},
  {id: 2, name: 'Bane'},
  {id: 1, name: 'Joker' }
];
const ids = arr.map(obj => obj.id);
console.log(ids);
//[1, 2, 1]

const set = new Set(ids);
const hasDuplicates = set.size < arr.length;
console.log(hasDuplicates)
//true

Suggested posts

Informationen zu Domänennamen finden

Ein Auszug aus Small, Sharp Software Tools von Brian P. Hogan

Informationen zu Domänennamen finden

Wenn Sie eine Anfrage an facebook.com stellen, sucht Ihr Computer nach dem Domänennamen, um diesen in eine IP-Adresse zu übersetzen, damit Ihr Computer diese Verbindung herstellen kann.

Die verheerenden Folgen eines Schlaganfalls vermeiden: Aus der Reise einer Familie lernen.

Die verheerenden Folgen eines Schlaganfalls vermeiden: Aus der Reise einer Familie lernen.

Einleitung Ein Schlaganfall ist ein medizinischer Notfall, der jeden jederzeit treffen kann. Sie tritt auf, wenn die Durchblutung eines Teils des Gehirns gestört ist, was zu einem plötzlichen Verlust der Gehirnfunktion führt.

Related posts

Der Mord an Jordan Neely und das Problem des „patriotischen“ Rassismus

Können die USA den entscheidenden Schritt tun, rassistisches Verhalten nicht mit der Identität eines guten Amerikaners gleichzusetzen?

Der Mord an Jordan Neely und das Problem des „patriotischen“ Rassismus

[Alarm auslösen: Dieser Aufsatz enthält Screenshots von Menschen, die den Mörder von Jordan Neely loben.] Polizeibeamte haben endlich – und vielleicht widerstrebend – Daniel Penny, den Mann, der Jordan Neely bis zu seinem Tod gewürgt hat, wegen dieses Mordes angeklagt.

Netzwerk-TV Twitter

Netzwerk-TV Twitter

Was alt ist, ist jetzt wieder neu und was früher das glitzernde, glänzende Ding war, fühlt sich jetzt langweilig an. Ich spreche nicht davon, dass JNCO-Jeans zusammen mit anderen Modetrends der späten 1990er Jahre unter den coolen Kids in der Innenstadt ein Comeback erleben.

Die Verfolgung von Christen: Das Hassverbrechen, über das wir nicht sprechen

Vergessen Sie Islamophobie: Christen (und Juden) sind die Hauptopfer religiöser Hassverbrechen.

Die Verfolgung von Christen: Das Hassverbrechen, über das wir nicht sprechen

Jeder rational denkende Mensch weiß, dass die politischen und medialen Kreise von der Linken dominiert werden, sogar von der extremen Linken, ein Zustand, der zu einem Ungleichgewicht im politischen Diskurs führt. Im Bereich der Religion ist dieses Ungleichgewicht deutlich sichtbar: Linke Zeitungen und Netzwerke beeilen sich nicht, den christlichen Glauben zu verteidigen.

Verfolgen Sie jeden mit nur einer Telefonnummer | OSINT-Untersuchung

Verfolgen Sie jeden mit nur einer Telefonnummer | OSINT-Untersuchung

Sie können ein OSINT-Ermittler, ein CTF-Spieler oder einfach jemand sein, der Spam-Anrufe erhält. Jemand, der versucht, die Nummer zu bestätigen, die Sie in einer Anzeige gesehen haben.