El primero es un método más convencional
Idea:
1. Cree un nuevo resultado de almacenamiento de matriz
2. Tome un elemento de la matriz original en el ciclo para el ciclo, compare con la matriz con este ciclo del elemento con el resultado de este elemento
3. Si no hay tal elemento en la matriz de resultados, se almacena en la matriz
Copiar código del código de la siguiente manera:
Array.prototype.unique1 = function () {
var res = [this [0]];
para (var i = 1; i <this.length; i ++) {
var repetir = falso;
para (var j = 0; j <res.length; j ++) {
if (this [i] == res [j]) {
Repetir = verdadero;
Romper;
}
}
if (! repetir) {
res.push (este [i]);
}
}
Regresar res;
}
Var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
Alerta (arr.unique1 ());
El segundo método es más eficiente que el método anterior
Idea:
1. Ordene primero la matriz original
2. Compruebe si el primer elemento en la matriz original es el mismo que el último elemento en la matriz de resultados.
3. Si es diferente, guarde el elemento en la matriz de resultados
Copiar código del código de la siguiente manera:
Array.prototype.unique2 = function () {
this.sort ();
var res = [this [0]];
para (var i = 1; i <this.length; i ++) {
if (this [i]! == res.length -1]) {
res.push (este [i]);
}
}
Regresar res;
}
Var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
Alerta (arr.unique2 ());
El segundo método también tendrá ciertas limitaciones, porque la clasificación antes de la devolución, el último resultado de retorno del último retorno también se clasifica. Si se requiere el orden de la matriz para no cambiar el pedido, entonces no se puede tomar este método.
El tercer método (recomendado)
Idea:
1. Cree un nuevo resultado de almacenamiento de matriz
2. Crea un objeto vacío
3. Cuando el ciclo, saque un elemento y un objeto cada vez para compararlo.
Nota: En cuanto a cómo comparar, tome un elemento de la matriz original y luego acceda a este atributo en el objeto.
Copiar código del código de la siguiente manera:
Array.prototype.unique3 = function () {
var res = [];
var json = {};
para (var i = 0; i <this.length; i ++) {
if (! json [this [i]]) {
res.push (este [i]);
json [este [i]] = 1;
}
}
Regresar res;
}
var arr = [112,112,34, 'hola', 112,112,34, 'hola', 'str', 'str1'];
Alerta (arr.unique3 ());