__i
07.02.2006, 15:13
есть массив в произвольным набором элементов, нужно из него удалить повторяющиеся элементы (т.е. чтоб все элементы были уникальными), я сделал так:
Array.prototype.removeDouble = function(pole) {
if (pole=='undefined')
var s = this.sort();
else
var s = this.sortOn(pole);
var i = 1;
while (i<s.length) {
if (s[i-1] == s[i]) {
s.splice(i, 1);
} else {
i++;
}
}
return s;
};
но этот код как мне кажеться не очень оптимальный т.к. нам приходиться сортировать массив.
у меня есть идея для второго варианта, -
несортируя в цикле ищем похожие элементы и удаляем их
(я не писал поленился), разница между вторым и первым будет всего в 1м цикле (в первом варианте мы на 1 раз больше проходим циклом while и то это спорный вариант, я не знаю каким алгоритмом реализована сортировка во флеше, если "пузырком" проходов по массиву будет больше, а если "Быстрая сортировка", то меньше),
Прошу предложить более оптимальный способ, если он есть
Array.prototype.removeDouble = function(pole) {
if (pole=='undefined')
var s = this.sort();
else
var s = this.sortOn(pole);
var i = 1;
while (i<s.length) {
if (s[i-1] == s[i]) {
s.splice(i, 1);
} else {
i++;
}
}
return s;
};
но этот код как мне кажеться не очень оптимальный т.к. нам приходиться сортировать массив.
у меня есть идея для второго варианта, -
несортируя в цикле ищем похожие элементы и удаляем их
(я не писал поленился), разница между вторым и первым будет всего в 1м цикле (в первом варианте мы на 1 раз больше проходим циклом while и то это спорный вариант, я не знаю каким алгоритмом реализована сортировка во флеше, если "пузырком" проходов по массиву будет больше, а если "Быстрая сортировка", то меньше),
Прошу предложить более оптимальный способ, если он есть