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>
|
|
22.01.2011, 14:59
|
х.з
|
|
Регистрация: 21.11.2010
Сообщений: 4,588
|
|
if( a[j]==a[i]){ /*Вот та строка*/
|
|
22.01.2011, 15:11
|
Интересующийся
|
|
Регистрация: 29.12.2010
Сообщений: 16
|
|
dmitriymar, не понял вас
|
|
22.01.2011, 15:24
|
|
CacheVar
|
|
Регистрация: 19.08.2010
Сообщений: 14,228
|
|
Дмитрий_Кирсанов, посмотри синтаксис конструкции if
http://javascript.ru/if
|
|
22.01.2011, 15:24
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,589
|
|
>missing ( before condition
перевожу: отсутствует ( перед условием
Это как-бэ ничего вам не говорит?
|
|
22.01.2011, 15:32
|
|
Профессор
|
|
Регистрация: 27.05.2010
Сообщений: 33,124
|
|
Сообщение от Дмитрий_Кирсанов
|
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.
|
|
22.01.2011, 18:25
|
...
|
|
Регистрация: 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);
}
}
|
|
22.01.2011, 19:30
|
Особый гость
|
|
Регистрация: 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.
|
|
22.01.2011, 22:43
|
|
Профессор
|
|
Регистрация: 03.04.2009
Сообщений: 1,263
|
|
monolithed, а теперь думаем, что будет, если будут числа двузначные и далее
|
|
22.01.2011, 23:26
|
Особый гость
|
|
Регистрация: 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.
|
|
|
|