JavaScript bzw JQuery; Array auslesen und nach Variablen mit gleichem Wert suchen?

... komplette Frage anzeigen

3 Antworten

Guten Abend Karsko, 

ich habe Dir eine kleine Methode geschrieben, mit der Du Deine Anforderung in JavaScript umsetzen kannst. Der Code ist hoffentlich hinreichend kommentiert.

function check_duplicate(array){
// Sortieren des Arrays.
var sorted_array = array.slice().sort();
// Duplikate.
var results = [];
for (var counter = 0; counter < array.length - 1; counter ++) {
if (sorted_array[counter + 1] == sorted_array[counter ]) {
// Duplikat dem Ergebnisarray hinzufügen.
results.push(sorted_array[counter]);
}
}
// Duplikate zurückgeben.
return results;
}

Taucht ein Element 2 mal auf, so wird es als ein Duplikat erkannt. Wenn ein Element mehr als 2 mal im Array enthalten ist, wird es erneut als Duplikat erkannt. Z.B.: [2,3,2,2] liefert als Ergebnis ein Array mit den Duplikaten [2,2], denn die 2 ist zweimal als Duplikat vorhanden.

Testen kannst Du diese Methode exemplarisch mit dem folgenden Code:

var array = [2, 5, 6, 7, 3, 2, 1, 5];
alert(has_duplicates(array));
if(check_duplicate(array).length > 0)
{
alert("Duplikate im Array: " + check_duplicate(array));
} else {
alert("Es gibt keine doppelten Elemente im Array!");
}

Wenn Du eine Boolean-Methode möchtest, die nur prüft, ob Duplikate vorhanden sind, empfehle ich folgende Erweiterung:

function has_duplicates(array){
return check_duplicate(array).length > 0;
}

Bei Rückfragen kannst Du Dich gerne wieder melden!

Viele Grüße

André, savest8

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von Karsko
22.01.2017, 21:00

Hallo Andre,

Vielen Dank für deinen Code. Ich habe jedoch noch ein kleines Problem; wenn ich nach "results.push" ein alert result platziere, dann erhalte ich zwar die richtigen Werte, wenn ich dies jedoch außerhalb der Funktion tue, dann gibt er mir nur den ersten Wert zurück. Er kürzt die Werte sozusagen nur auf den Ersten und die anderen zeigt er nicht mehr an. Habe ich in meinem Code hier etwas falsch gemacht? Kann man ev. mit alert keine arrays wiedergeben?

var midcard = [1, 2, 3, 4, 3, 6, 6, 6];

var x = check_duplicate(midcard);
alert(x);

 Sorry ich bin erst ein blutiger Anfänger (: 

 Noch einen schönen Abend und Danke für deine Antwort. 

0

Wenn du nur prüfen möchtest ob das Array doppelte (primitive) Werte enthält (nicht welche):

var containsDoubles = function(arr) {
return Object.keys(arr.reduce(function(accu, it) {
return accu[it] = true, accu;
}, {})).length !== arr.length;
}
containsDoubles([1,2,3]); //false
containsDoubles([1,2,1]); //true



Antwort bewerten Vielen Dank für Deine Bewertung

Schau mal in der Javascript API nach. Da finden sich bestimmt Methoden.

Antwort bewerten Vielen Dank für Deine Bewertung

Was möchtest Du wissen?