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)

рони 13.07.2015 15:46

ksa,
где 6-9 ?
var a = [6, 7, 8, 9, 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);

ksa 13.07.2015 15:54

Цитата:

Сообщение от рони
где 6-9 ?

Не совсем понял причем тут 6-9... :blink:

рони 13.07.2015 16:17

ksa,
алгоритм должен выдать при 6, 7, 8, 9, 14, 15, 16, 20, 21 => 6-9,14-16,20-21 -- конечно пока ТС это неуточнил

ksa 13.07.2015 16:25

Цитата:

Сообщение от рони
алгоритм должен выдать при 6, 7, 8, 9, 14, 15, 16, 20, 21 => 6-9,14-16,20-21

Это не следует из варианта ТСа... :)

рони 13.07.2015 16:27

Цитата:

Сообщение от ksa
Это не следует из варианта ТСа...

да пока это только моё предположение

ksa 13.07.2015 16:37

рони, я думал, что ты про 9шт. элементов (их у ТСа 8шт. в примере) ранее писал... :D А ты оказывается про 9-ку как значение в том массиве...

рони 13.07.2015 16:43

ksa,
:yes:

laimas 13.07.2015 18:04

Цитата:

Сообщение от ksa
2, 2, 1

Слабоват JS в плане работы с датами, то есть готовых инструментами для работы с этими данными не так и много, а вот на сервере даже пусть и для такой последовательности достаточно всего, включая и работу с интервалами и прочим. Мне так кажется, что проще подготовить необходимое уже на сервере, это не так и обременительно будет.

silent 13.07.2015 22:05

вставлю еще я 5 копеек :write:
алгоритм должен пропускать 2 - 1 - 0 ??

var arr = [6, 7, 8, 9, 14, 15, 16, 20, 21];
var mas = [];
for(var i = 0, j = 3; i < arr.length; i++, j-=1) { 
  (j > 0) ? mas.push(arr[i] + '-' + arr[i+j]) : j = 3;
  i+=j;
}
alert(mas)

рони 13.07.2015 23:11

silent,
:-?
var arr = [6,  20, 21];
var mas = [];
for(var i = 0, j = 3; i < arr.length; i++, j-=1) { 
  (j > 0) ? mas.push(arr[i] + '-' + arr[i+j]) : j = 3;
  i+=j;
}
alert(mas)

:write:
var a = [6,20,21];
    function fn(b) {
    for (var d = [], c, a = 0; a < b.length; a++)
        if (!c && (c = b[a]), void 0 !== b[a + 1] && 1 < b[a + 1] - b[a] || a == b.length - 1) d.push(c + (c == b[a] ? "" : " - " + b[a])), c = !1;
    return d
};

     alert(fn(a))


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