O primeiro é um método mais convencional
Ideia:
1. Construa um novo resultado de armazenamento de matriz
2. Pegue um elemento da matriz original no ciclo, compare com a matriz com este ciclo de elemento com o resultado deste elemento
3. Se não houver esse elemento na matriz de resultados, é armazenado na matriz
Copie o código do código da seguinte forma:
Array.prototype.unique1 = function () {
var res = [this [0]];
for (var i = 1; i <this.length; i ++) {
var repetição = false;
for (var j = 0; j <res.Length; j ++) {
if (este [i] == res [j]) {
Repetir = true;
Quebrar;
}
}
if (! repita) {
res.push (este [i]);
}
}
Retornar res;
}
Var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
Alerta (arr.unique1 ());
O segundo método é mais eficiente do que o método acima
Ideia:
1. Classifique a matriz original primeiro
2. Verifique se o primeiro elemento na matriz original é o mesmo que o último elemento na matriz de resultados.
3. Se diferente, salve o elemento na matriz de resultados
Copie o código do código da seguinte forma:
Array.prototype.unique2 = function () {
this.sort ();
var res = [this [0]];
for (var i = 1; i <this.length; i ++) {
if (este [i]! == res.Length -1]) {
res.push (este [i]);
}
}
Retornar res;
}
Var arr = [1, 'a', 'a', 'b', 'd', 'e', 'e', 1, 0]
Alerta (arr.unique2 ());
O segundo método também terá certas limitações, porque a classificação antes do retorno, o último resultado do último retorno também é classificado. Se a ordem da matriz for necessária para não alterar o pedido, esse método não poderá ser feito.
O terceiro método (recomendado)
Ideia:
1. Crie um novo resultado de armazenamento de matriz
2. Crie um objeto vazio
3. Quando o ciclo, retire um elemento e objeto cada vez para compará -lo.
Nota: Quanto a como comparar, pegue um elemento da matriz original e acesse esse atributo no objeto.
Copie o código do código da seguinte forma:
Array.prototype.unique3 = function () {
var res = [];
var json = {};
for (var i = 0; i <this.length; i ++) {
if (! json [este [i]]) {
res.push (este [i]);
json [this [i]] = 1;
}
}
Retornar res;
}
var arr = [112,112,34, 'Olá', 112,112,34, 'olá', 'str', 'str1'];
Alerta (arr.unique3 ());