Das erste ist eine konventionellere Methode
Idee:
1. Erstellen Sie ein Neuarray -Speicherergebnis
2. Nehmen Sie ein Element aus dem ursprünglichen Array im Zyklus, vergleichen Sie mit dem Array mit diesem Elementzyklus mit dem Ergebnis dieses Elements
3. Wenn es im Ergebnisarray kein solches Element gibt, wird es im Array gespeichert
Kopieren Sie den Code -Code wie folgt:
Array.Prototype.unique1 = function () {
var res = [this [0]];
für (var i = 1; i <this.Length; i ++) {
var repeat = false;
für (var j = 0; j <res.length; j ++) {
if (this [i] == res [j]) {
Wiederholen = wahr;
Brechen;
}
}
if (! wiederholen) {
res.push (this [i]);
}
}
Return res;
}
Var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
Alert (arr.unique1 ());
Die zweite Methode ist effizienter als die obige Methode
Idee:
1. Sortieren Sie zuerst das ursprüngliche Array
2. Überprüfen Sie, ob das erste Element im Original -Array das gleiche Element im Ergebnis der Ergebnis ist.
3. Wenn unterschiedlich, speichern Sie das Element in das Ergebnisarray
Kopieren Sie den Code -Code wie folgt:
Array.prototype.unique2 = function () {
this.sort ();
var res = [this [0]];
für (var i = 1; i <this.Length; i ++) {
if (this [i]! == res.Length -1]) {
res.push (this [i]);
}
}
Return res;
}
Var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
Alert (arr.unique2 ());
Die zweite Methode hat auch eine bestimmte Einschränkungen, da die Sortierung vor der Rückkehr das letzte Rückgabeergebnis der letzten Rendite ebenfalls sortiert wird. Wenn die Reihenfolge des Arrays erforderlich ist, um die Reihenfolge nicht zu ändern, kann diese Methode nicht angenommen werden.
Die dritte Methode (empfohlen)
Idee:
1. Erstellen Sie ein Neuarray -Speicherergebnis
2. Erstellen Sie ein leeres Objekt
3. Nehmen Sie jedes Mal ein Element und ein Objekt aus, um es zu vergleichen.
HINWEIS: Nehmen Sie ein Element aus dem ursprünglichen Array und greifen Sie dann im Objekt auf dieses Attribut zu.
Kopieren Sie den Code -Code wie folgt:
Array.prototype.unique3 = function () {
var res = [];
var json = {};
für (var i = 0; i <this.Length; i ++) {
if (! json [this [i]]) {
res.push (this [i]);
json [this [i]] = 1;
}
}
Return res;
}
var arr = [112,112,34, 'Hallo', 112,112,34, 'Hallo', 'Str', 'str1'];
Alert (arr.unique3 ());