Автор Тема: Очистить строку от дублирующих значений  (Прочитано 2240 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
У меня есть all  = document.popup.to.value;
Она содержит элементы через запятую.
Как мне убрать дублирующие элементы в ней?
The documentations is your friend

Оффлайн Макс

  • vir magni ingenii
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3534
  • +0/-0
  • 2
    • Просмотр профиля
Очистить строку от дублирующих значений
« Ответ #1 : 22 Января 2003, 19:38:59 »
Алгоритм я думаю ясен:
1. Разбить строку на массив.
2. Отфильтровать дубликаты
3. Объединить строку

Делается примерно так
1. elements = all.split(\',\'); // split делает тоже что и в perl-е (только регекспы не поддерживает).
2. Здесь много можно чего придумать. Я бы создал второй массив
unique_elements = array();
i = 0; // счетчик по массиву

Потом функцию написал бы, которая проверяла бы входит ли элемент в массив
function in_array(var, ar) {
 for (n=0; n < ar.length; n++) {
   if (var == ar[n]) return true;
 }
 return false;
}


и потом цикл
for(k=0; k< elements.length; k++) {
  if (!in_array(ar[k], unique_elements)) {
    unique_elements[i++] = elements[k];
  }
}

скорее всего в этом цикле ты получиш массив уникальных значений.

3. str = unique_elements.join(\',\'); // объединяеш массив в строку.

Примерно так. Код я не проверял.


ЗЫ
имхо лучше не надо называть строку all , поскольку в IE есть объект с таким именем.
First learn computer science and all the theory. Next develop a programming style. Then forget all that and just hack. ( George Carrette )

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
Очистить строку от дублирующих значений
« Ответ #2 : 22 Января 2003, 19:54:57 »
сенкс.
получил такой простой ответ
a=\'1,2,3,1,2,7,7,6,7,8\';
arr1=a.split(/,/);
arr2=[];
for(i in arr1)arr2[arr1]++;
arr1=[];
for(i in arr2)arr1[arr1.length]=i;
alert(arr1) ;
The documentations is your friend

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28