Kann man in Javascript prüfen, ob ein Array 2-mal den gleichen Wert hat?

1 Antwort

Ja, das kann man auf unterschiedlichen Wegen lösen. Drei Herangehensweisen stelle ich vor:

a) Mit einer Funktion, in der du via Schleife über das Array iterierst. Je Lauf iterierst du nochmals über das Array und prüfst, ob das aktuelle Element (der äußeren Schleife) noch einmal zu finden ist. Dabei musst du das Element selbst natürlich ausschließen.

In Pseudocode:

iteriere über Array:
  iteriere über Array:
    wenn äußerer Index == innerer Index
      ignorieren
    wenn Array[äußerer Index] == Array[innerer Index]
      gib true zurück
gib false zurück   

Vor allem für Programmieranfänger ist das eine gute Fingerübung.

b) Du fügst die Arrayelemente einem Set hinzu und vergleichst dessen Länge mit der des Arrays.

const hasDuplicates = new Set(yourArray).size !== yourArray.length;

Ein Set nimmt keine doppelten Werte auf. Daher muss es weniger Elemente beinhalten, sollte es Dopplungen geben.

Das gilt soweit aber nur für primitive Werte und identische Objekte. Das bedeutet, dieses Set hätte zwei Elemente:

const coordinates = [
  { x: 1, y: 1 },
  { x: 1, y: 1 }
];
console.log(new Set(coordinates).size);

Beide Objekte sind im Zustand zwar gleich, jedoch nicht miteinander identisch. Du bräuchtest eine Formel / ein Kriterium, welches gleiche Werte sichtbar macht.

c) Man kann nach einem bestimmten Wert filtern und von dem Ergebnis die Länge ermitteln.

Bei diesem Beispiel:

const coordinates = [
  { x: 1, y: 1 },
  { x: 5, y: 3 },
  { x: 2, y: 3 },
  { x: 1, y: 1 }
];
const numberOfOccurences = coordinates.filter(coordinate => coordinate.x === 1 && coordinate.y === 1).length;

würde nach den Vorkommen von { x: 1, y: 1 } gesucht werden. Die gefilterte Menge würde zwei Einträge beinhalten.


MisterMoinz 
Beitragsersteller
 21.10.2022, 22:36

Danke danke, :D ich habe ewig auf eine Antwort gewartet! ^^

0