Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Алгоритм для слияния элементов массива с datetime (https://javascript.ru/forum/misc/56978-algoritm-dlya-sliyaniya-ehlementov-massiva-s-datetime.html)

silent 13.07.2015 23:23

у тебя здесь 6 - 8,14 - 16,20 - 8,14 - 16,20 - 21
1 - 1 - 3 -1 -1
или я что то не понимаю ?
for (var a = [6, 7, 8, 14, 15, 16, 20, 21,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)


ладно пойду делом займусь ))

рони 13.07.2015 23:55

silent,
два дня для тестирования это уже перебор! алгоритм для суток только

silent 14.07.2015 07:07

извини я не так понял поставленную задачу :)

kostyanet 14.07.2015 08:28

Алгоритм - разбить на диапазоны по условию разница времени между датами больше 1 часа и вывести первое и последнее значение каждого диапазона в формате дата - первое значение времени - последнее значение времени. Почему я и предложил перевести все в long сперва. Ибо не факт что эти красивые циферки не испортятся на практике.

laimas 14.07.2015 08:33

Цитата:

Сообщение от kostyanet
ни. Почему я и предложил перевести все в long сперва.

Потому, что дурка включена, и нет представления, что такое дата/время.

kostyanet 14.07.2015 12:33

Покажите ему юникс время, кто-нибудь.

Demath 15.07.2015 21:15

рони,
у тебя слишком замучено для такой задачи.
как-то так

var a = [6, 7, 8, 14, 15, 16, 20, 21,6, 7, 8, 14, 15, 16, 20, 21],
    n = a.length,
    b = [],
    m = 0;

    for (var i = 0, t = a[i]; i < n; i++)
    {  if (a[i]+1 == a[i+1]) continue;
       else
       {  b[m++] = ((t == a[i]) ? '' : (t+' - ')) + a[i];
          t = a[i+1];
       } 
    }
    
    alert(b);

рони 15.07.2015 21:31

Demath,
ок совершенству нет предела

рони 15.07.2015 21:45

Demath,
а чем b.push не устроил?

Demath 15.07.2015 21:59

рони,
привык без него


Часовой пояс GMT +3, время: 07:30.