Javascript.RU

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

Алгоритм для слияния элементов массива с datetime
Туплю, не могу придумать алгоритм, который бы из такой структуры данных

Код:
19.07.2015 6:00
19.07.2015 7:00
19.07.2015 8:00
19.07.2015 14:00
19.07.2015 15:00
19.07.2015 16:00
19.07.2015 20:00
19.07.2015 21:00
сделал такую
Код:
19.07.2015 6:00 - 8:00
19.07.2015 14:00 - 16:00
19.07.2015 20:00 - 21:00
Интересно найти алгоритмически красивое решение
Ответить с цитированием
  #2 (permalink)  
Старый 13.07.2015, 14:41
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Сначала в long преобразуйте, там виднее будет как квантовать по часам.
Ответить с цитированием
  #3 (permalink)  
Старый 13.07.2015, 15:07
Профессор
Отправить личное сообщение для laimas Посмотреть профиль Найти все сообщения от laimas
 
Регистрация: 14.01.2015
Сообщений: 12,989

А по какому принципу определяются именно эти интервалы?

6:00 - 8:00
14:00 - 16:00
20:00 - 21:00
Ответить с цитированием
  #4 (permalink)  
Старый 13.07.2015, 15:11
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от laimas
А по какому принципу определяются именно эти интервалы?

6:00 - 8:00
14:00 - 16:00
20:00 - 21:00
2, 2, 1
Ответить с цитированием
  #5 (permalink)  
Старый 13.07.2015, 15:14
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от romapost Посмотреть сообщение
Туплю, не могу придумать алгоритм, который бы из такой структуры данных

Код:
19.07.2015 6:00
19.07.2015 7:00
19.07.2015 8:00
19.07.2015 14:00
19.07.2015 15:00
19.07.2015 16:00
19.07.2015 20:00
19.07.2015 21:00
сделал такую
Код:
19.07.2015 6:00 - 8:00
19.07.2015 14:00 - 16:00
19.07.2015 20:00 - 21:00
Интересно найти алгоритмически красивое решение
Цикл с 0 с шагом 3... Концовку брать "через 1", если оного нет - брать у следующего.
Ответить с цитированием
  #6 (permalink)  
Старый 13.07.2015, 15:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126


for (var a = [6, 7, 8, 14, 15, 16, 20, 21], c = [], temp, i = 0; i < a.length; i++)
    if (!temp && (temp = a[i]), void 0 !== a[i + 1] && 1 < a[i + 1] - a[i] || i == a.length - 1) c.push(temp + " - " + a[i]), temp = !1;
alert(c);
Ответить с цитированием
  #7 (permalink)  
Старый 13.07.2015, 15:24
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Мои 5коп...

var a = [6, 7, 8, 14, 15, 16, 20, 21];
var b=[];
for (var i = 0; i < a.length; i+=3) {
	b[b.length]=a[i]+' - '+((a[i+2])? a[i+2]: a[i+1]);
};
alert(b);
Ответить с цитированием
  #8 (permalink)  
Старый 13.07.2015, 15:28
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,126

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

Сообщение от рони
если добавить 9 уже будет неправильно
Это громко сказано... Потому как общего примера нет, как и "правильного" алгоритма.

Вопрос был "как это перевести в то", мой пример делает это.
Может это твой пример будет не правильным.
Ответить с цитированием
  #10 (permalink)  
Старый 13.07.2015, 15:33
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

рони, для "9-ти"...

var a = [6, 7, 8, 14, 15, 16, 20, 21];
var b=[];
for (var i = 0; i < a.length-1; i+=3) {
	b[b.length]=a[i]+' - '+((a[i+2])? a[i+2]: a[i+1]);
};
alert(b);
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выбор из массива трех элементов sonntagausgang Общие вопросы Javascript 2 26.05.2013 02:59
Определить количество отрицательных элементов массива Тип_1 Общие вопросы Javascript 3 25.06.2012 18:24
поочередный вывод элементов массива seosovest Общие вопросы Javascript 7 09.04.2012 10:47
Использование одной функции для элементов с разными ID Ferroks Общие вопросы Javascript 10 11.09.2009 08:51
Можно ли как для произвольного массива создавать вызовы функций , имеющих на входе kefi Общие вопросы Javascript 3 17.04.2009 16:53