Hallo Christian,
wie kann ich Duplikate in einem Array finde?
Relativ performanter Algorithmus (Aufwand ist n):
var namen = Array("A","B","C","D","E","E","A");
var unique = Array();for(i=0;i<namen.length;i++) {
unique[namen[i]]++;
}for(name in unique) {
alert(name);
}
Das ermittelt aber noch nicht, _welche_ Elemente mehrfach vorkommen. Wenn das auch noch gewünscht ist, steigt der Aufwand auf n + m {n=namen.length; m=unique.length}
var namen = new Array("A und A", "B und B", "C und \n " + unescape("%D8") + " C", "E und E", "C und C", "D und D", "E und E", "C und \n " + unescape("%D8") + " C", "B und B");
var unique = new Array();
for(i=0;i<namen.length;i++) {
unique[namen[i]] = (unique[namen[i]])?unique[namen[i]]+";"+String(i):String(i);
}
for(name in unique) {
if (unique[name].indexOf(";") != -1)
alert(name + " kommt vor als Element " + unique[name]);
}
Das ist allerdings immer noch besser als meine Lösung. Wobei ich mir noch nicht sicher bin, ist die Frage, ob dieser Algorithmus allgemeingültig(für viele Programmiersprachen) ist, speziell, ob es immer möglich sein wird einen beliebigen String, mit allen möglichen Sonderzeichen, als Index eines assoziativen Arrays zu benutzen.
viele Grüße
Axel