Hallo,
Alles richtig, aber man könnte das noch weiter führen.
1. Warum überhaupt nachträglich Doppelte herausschneiden, warum keine eigene push-Funktion, die Doppelte erst gar nicht einträgt?
Array.prototype.add = function (element) {
if (!this.valuesObject) {
this.valuesObject = new Object();
}
if (typeof this.valuesObject[element] != "undefined") {
return false;
}
this.push(element);
this.valuesObject[element] = true;
return true;
};
var array = new Array();
array.add("a");
array.add("b");
array.add("c");
alert(array.join(", "));
array.add("a");
alert(array.join(", "));
Natürlich kann man dann die anderen Array-Methoden erst einmal nicht wie gewohnt verwenden, z.B. müsste man splice() mit einer Wrapper-Methode überschreiben, die dann zusätzlich delete this.valuesObject[element]; ausführt.
2. Wozu dient der Array konkret, welche Arraymethoden werdne verwendet? Reicht nicht ein Object aus, wenn man zum Prüfen der Doppelten sowieso ein Object mit exakt demselben Inhalt wie der Array speichern muss?
Mathias