Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.01.2011, 14:38
Интересующийся
Отправить личное сообщение для Дмитрий_Кирсанов Посмотреть профиль Найти все сообщения от Дмитрий_Кирсанов
 
Регистрация: 29.12.2010
Сообщений: 16

как удалить одинаковые элементы из массива
Файр-баг находит ошибку в строке if a[j]==a[i]{ - обозначена в коде, пишет что missing ( before condition, как избавиться от этой ошибки? Правильна ли логика вычислений?

<html>
<script>
var a= new Array(23);
a[0]=1;
a[1]=1;
a[2]=2;
a[3]=3;
a[4]=4;
a[5]=4;
a[6]=1;
a[7]=5;
a[8]=1;
a[9]=6;
a[10]=1;
a[11]=1;
a[12]=7;
a[13]=1;
a[14]=1;
a[15]=7;
a[16]=1;
a[17]=1;
a[18]=7;
a[19]=1;
a[20]=1;
a[21]=1;
a[22]=8;
aLength = a.length;
a.sort();
for (var i=0; i<=aLength; i++){
for (var j=1; j<=aLength; j++){
if a[j]==a[i]{ /*Вот та строка*/
a.splice(a[i]);
}
}
}
alert(a);
</script>
<html>
Ответить с цитированием
  #2 (permalink)  
Старый 22.01.2011, 14:59
х.з
Посмотреть профиль Найти все сообщения от dmitriymar
 
Регистрация: 21.11.2010
Сообщений: 4,588

if( a[j]==a[i]){ /*Вот та строка*/
Ответить с цитированием
  #3 (permalink)  
Старый 22.01.2011, 15:11
Интересующийся
Отправить личное сообщение для Дмитрий_Кирсанов Посмотреть профиль Найти все сообщения от Дмитрий_Кирсанов
 
Регистрация: 29.12.2010
Сообщений: 16

dmitriymar, не понял вас
Ответить с цитированием
  #4 (permalink)  
Старый 22.01.2011, 15:24
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,202

Дмитрий_Кирсанов, посмотри синтаксис конструкции if
http://javascript.ru/if
Ответить с цитированием
  #5 (permalink)  
Старый 22.01.2011, 15:24
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,565

>missing ( before condition
перевожу: отсутствует ( перед условием
Это как-бэ ничего вам не говорит?
Ответить с цитированием
  #6 (permalink)  
Старый 22.01.2011, 15:32
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,103

Сообщение от Дмитрий_Кирсанов
aLength = a.length;
длина массива при выборке будет изменяться поэтому сохранять длину не смысла
На всякий случай рабочий пример )))
var a= new Array(23);
a[0]=1;
a[1]=1;
a[2]=2;
a[3]=3;
a[4]=4;
a[5]=4;
a[6]=1;
a[7]=5;
a[8]=1;
a[9]=6;
a[10]=1;
a[11]=1;
a[12]=7;
a[13]=1;
a[14]=1;
a[15]=7;
a[16]=1;
a[17]=1;
a[18]=7;
a[19]=1;
a[20]=1;
a[21]=1;
a[22]=8;
a.sort();
for (var i = 0; i < a.length; i++)
for (var j = i + 1; j < a.length;)
if (a[i] == a[j]) a.splice(j, 1);
else j++;
alert(a);

Последний раз редактировалось рони, 23.01.2011 в 12:11.
Ответить с цитированием
  #7 (permalink)  
Старый 22.01.2011, 18:25
...
Отправить личное сообщение для Zeroglif Посмотреть профиль Найти все сообщения от Zeroglif
 
Регистрация: 09.03.2008
Сообщений: 216

var a = [1,1,2,3,4,4,1,5,1,6,1,1,7,1,1,7,1,1,7,1,1,1,8],
    i = a.length;
a.sort();
while (i--) {
    if (a[i] == a[i-1]) {
        a.splice(i, 1);
    }
}
Ответить с цитированием
  #8 (permalink)  
Старый 22.01.2011, 19:30
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от рони
На всякий случай рабочий пример
не тот случай, ПЦ наглухо зависает ))

Но есть, еще способ:

var array = [1, 2, 1, 1, 5, 3, 4, 4, 5], i = array.length, result = [];
array.sort();

while(i--){
    if(result.join('').search(array[i]) == '-1') {
        result.push(array[i]);
    }
}

alert(result);



upd: Zeroglif, тоже очень интересное решение!

Последний раз редактировалось monolithed, 22.01.2011 в 19:42.
Ответить с цитированием
  #9 (permalink)  
Старый 22.01.2011, 22:43
Аватар для e1f
e1f e1f вне форума
Профессор
Отправить личное сообщение для e1f Посмотреть профиль Найти все сообщения от e1f
 
Регистрация: 03.04.2009
Сообщений: 1,263

monolithed, а теперь думаем, что будет, если будут числа двузначные и далее
Ответить с цитированием
  #10 (permalink)  
Старый 22.01.2011, 23:26
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от e1f
а теперь думаем
да уж, не доглядел:

var array = [1, 2, 1, 10, 5, 3, 4, 40, 50], i = array.length, result = [];

array.sort(function(a,b) {
    return b-a;
});

while(i--){
    if(result.join().search(array[i]+'\\b') == '-1') {
        result.push(array[i]);
    }
}

alert(result);

Последний раз редактировалось monolithed, 23.01.2011 в 14:31.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как выбрать li элементы из первого уровня меню TicTac Общие вопросы Javascript 9 02.05.2013 21:05
Как удалить элемент из дерева DOM dummer jQuery 13 16.01.2011 16:19
Как удалить из памяти весь XML документ? EisBerg Events/DOM/Window 1 03.04.2010 14:45
Как удалить все пустые элементы UL smashercosmo Events/DOM/Window 13 25.02.2009 09:03
Как частично удалить текстовую строку из набора? Nubi jQuery 2 27.12.2008 22:11