Как известно, нет встроенной функции для удаления дубликатов из массива в javascript. Я заметил, что этого также не хватает в jQuery (который имеет уникальную функцию только для выбора DOM), а наиболее распространенный фрагмент, который я нашел, проверяет весь массив и его подмножество для каждого элемента (не очень эффективно, я думаю), например
for (var i = 0; i < arr.length; i++)
for (var j = i + 1; j < arr.length; j++)
if (arr[i] === arr[j])
//whatever
поэтому я сделал свой собственный:
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;
}
Интересно, если какой-либо другой алгоритм принят как лучший для этого случая (или если вы видите какой-либо очевидный недостаток, который может быть исправлен) или, что вы будете делать, когда вам это нужно в javascript (я знаю, что jQuery не является единственной структурой, и некоторые другие могут уже охватить это).