Модераторы: Sardar, Aliance
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сортировка элементов массива, отсортировать массив 
V
    Опции темы
ОнКофе
Дата 23.3.2008, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 3.3.2006
Где: http://www.angeli na-pitt.by.ru

Репутация: нет
Всего: нет



необходимо отсортировать массив, например
на входе
var Array = ["a","b","c","a","d","e","a","f","b"];

на выходе
Array = ["a","b","c","a(1)","d","e","a(2)","f","b(1)","a(3)"];

пробую сделать вот так:

Код

for (var i=0; i<Array.length; i++)
{
 temp = Array[i];
 for (var j=0; j<Array.length; j++)
 {
  step=0;
  step=step+1;
  qwerty = Array.shift();
   if (temp==qwerty) qwerty=qwerty+"("+step+")";
   Array.push(qwerty);
 }
                                        
document.Write(tempName+"<BR>");



но на выходе получаю
Array = ["a","b","c","a(1)","d","e","a(1)(1)","f","b(1)","a(1)(1)(1)"];

Может есть идеи перебирать массив как-то по-другому?

PM MAIL WWW   Вверх
Optimus
Дата 23.3.2008, 22:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 186
Регистрация: 1.9.2007

Репутация: нет
Всего: 14



Цитата(ОнКофе @  23.3.2008,  22:10 Найти цитируемый пост)

Код

step=0;
step=step+1;


step всегда будет 1
--------------------
"постановка задачи наполовину решает саму задачу"
PM MAIL   Вверх
ОнКофе
Дата 23.3.2008, 22:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 3.3.2006
Где: http://www.angeli na-pitt.by.ru

Репутация: нет
Всего: нет



это я уже понял... не могу догнать как сделать правильно
PM MAIL WWW   Вверх
ksnk
Дата 23.3.2008, 22:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прохожий
****


Профиль
Группа: Комодератор
Сообщений: 6855
Регистрация: 13.4.2007
Где: СПб

Репутация: 48
Всего: 386



Интересно, а почему то что получается называется сортировкой?

Требуемый результат, вроде, получается вот так:
Код

var Array = ["a","b","c","a","d","e","a","f","b"];
var tmp={};
for (var i=0; i<Array.length; i++)
{
 var temp = Array[i];
 tmp[temp]=(tmp[temp] ||0)+1;
 if(tmp[temp]!=1)Array[i]+='('+tmp[temp]+')';
}                                    
alert(Array);



--------------------
Человеку свойственно ошибаться, программисту свойственно ошибаться профессионально ! user posted image
PM MAIL WWW Skype   Вверх
Optimus
Дата 23.3.2008, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 186
Регистрация: 1.9.2007

Репутация: нет
Всего: 14



Может так:
Код

for (var i=0; i < Array.length; i++)
{
 temp = Array[i];
 step=1;
 for (var j=0; j<Array.length; j++)
 {
  
  qwerty = Array.shift();
   if (temp==qwerty) 
   {
     qwerty=qwerty+"("+step+")";
     ++step;
   }
   Array.push(qwerty);
 }
 
 document.Write(tempName+"<BR>");
}       

--------------------
"постановка задачи наполовину решает саму задачу"
PM MAIL   Вверх
ОнКофе
Дата 23.3.2008, 23:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 274
Регистрация: 3.3.2006
Где: http://www.angeli na-pitt.by.ru

Репутация: нет
Всего: нет



все сам догнал...
вроде бы так должно работать быстрее всего (если я не прав то с удовольствием узнаю о более быстрых способах)

вот что получилось у меня:

Код

for (var i=0; i<Array.length; i++)
 {
  temp = Array[i];
  count=0;
   for (var j=i+1; j<Array.length; j++)
    {
      tempN = Array[j];
     if (temp==tempN) 
     {
       count = count+1; 
       Array[j]= temp+"("+count+")";
     }
   }
 }
document.Write(Array.join("<BR>"));

PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | JavaScript: для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0500 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.