Forum Webscript.Ru

Программирование => JavaScript & JScript => Тема начата: NeoNox от 22 Января 2003, 16:43:57

Название: Очистить строку от дублирующих значений
Отправлено: NeoNox от 22 Января 2003, 16:43:57
У меня есть all  = document.popup.to.value;
Она содержит элементы через запятую.
Как мне убрать дублирующие элементы в ней?
Название: Очистить строку от дублирующих значений
Отправлено: Макс от 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 есть объект с таким именем.
Название: Очистить строку от дублирующих значений
Отправлено: NeoNox от 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) ;