Come tutti sanno non c'è alcuna funzione incorporata per rimuovere i duplicati da un array in JavaScript. Ho notato che manca anche in jQuery (che ha una funzione unica solo per le selezioni DOM), e lo snippet più comune che ho trovato controlla l'intero array e un sottoinsieme di esso per ogni elemento (non molto efficiente, penso), come :unico() per array in JavaScript
for (var i = 0; i < arr.length; i++)
for (var j = i + 1; j < arr.length; j++)
if (arr[i] === arr[j])
//whatever
così ho fatto il mio:
function unique (arr) {
var hash = {}, result = [];
for (var i = 0; i < arr.length; i++)
if (!(arr[i] in hash)) { //it works with objects! in FF, at least
hash[arr[i]] = true;
result.push(arr[i]);
}
return result;
}
mi chiedo se c'è qualche altro algoritmo accettato come il migliore per questo caso (o se si vede alcun difetto evidente che poteva essere risolto), o , cosa fai quando hai bisogno di questo in javascript (sono consapevole che jQuery non è l'unico framework e alcuni altri potrebbero averlo già trattato).
fare queste serie contiene solo valori scalari, o c'è una possibilità che contenga oggetti e array? –
E c'è l'ipotesi di ordinato o no? –