Como todos saben, no hay una función incorporada para eliminar los duplicados de una matriz en javascript. Me he dado cuenta de que esto también falta en jQuery (que tiene una función única para selecciones DOM solamente), y el fragmento más común que encontré comprueba toda la matriz y un subconjunto de ella para cada elemento (no muy eficiente, creo), como :unique() para matrices en javascript
for (var i = 0; i < arr.length; i++)
for (var j = i + 1; j < arr.length; j++)
if (arr[i] === arr[j])
//whatever
así que hice mi propia:
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;
}
me pregunto si hay algún otro algoritmo aceptado como el mejor para este caso (o si observa cualquier defecto obvio que podría ser fijo), o , ¿qué haces cuando necesitas esto en javascript (soy consciente de que jQuery no es el único marco y algunos otros pueden tener esto ya cubierto).
hacer estas matriz contiene únicamente valores escalares, o ¿Existe la posibilidad de que contenga objetos y matrices? –
¿Y existe la suposición de ordenado o no? –