Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Передача массивов в функцию (https://javascript.ru/forum/misc/64531-peredacha-massivov-v-funkciyu.html)

AlTiantum 18.08.2016 09:01

Передача массивов в функцию
 
Здравствуйте, в javascript только стал познавать, возник вопрос пока ответа не нашел, нашел на форуме скрипт с расписанием прихода транспорта, так вот, как передать другие массивы(timeBuss1, timeBuss2) с временем в функцию для расчета?
var timeBuss = ['9:30','10:30','11:40','11:45','11:50','12:30','13:20','14:06']
var timeBuss1=['8:04', '9:55',"10:35"]
var timeBuss2=['22:22','22:53' ,'23:44','23:59','00:56']

function timerCurrentBuss(time) {   

    var timeBuss = time;

    setInterval(currentTimeForBuss, 60);
    
    function currentTimeForBuss() {
        var date = new Date()//Получили текущую дату
        var time = {
            hours: date.getHours(),
            minutes: date.getMinutes(),
    		seconds: date.getSeconds()
        }//получили часы и минуты
    	document.getElementById("current_time").innerHTML = ('Текущее время: ' +  (time.hours + ':' + time.minutes + ':' +     time.seconds));
    
        for (var i = 0; i < timeBuss.length-1; i++) {//Цикл по массиву с расписанием
            var tmp = timeBuss[i].split(':');//разбили время расписания на часы и минуты
            var bussTime = {
                hours: tmp[0], minutes: tmp[1]
            }
            tmp = timeBuss[i + 1].split(':');
            var nextBussTime = {
                hours: tmp[0], minutes: tmp[1]
            }
            
            if ((time.hours >= bussTime.hours && time.hours <= nextBussTime.hours)) {
                var timeLeft = bussTime;
            }
        }
        
        document.getElementById("nextbusleft").innerHTML = ("Осталось минут: " + (timeLeft.minutes - time.minutes))
    };
}

timerCurrentBuss(timeBuss);

рони 18.08.2016 09:16

AlTiantum,
а что мешает обьединить массивы?

AlTiantum 18.08.2016 10:16

Цитата:

Сообщение от рони (Сообщение 425862)
AlTiantum,
а что мешает обьединить массивы?

Предлагаете их объединить в многомерный массив? И считывать каждый массив от туда. Думал об этом и попробовал, но не получилось:help:

warren buffet 18.08.2016 10:50

Цитата:

Сообщение от AlTiantum
как передать

Видимо не как, а когда, поскольку как - нарисовано в последней строчке. Теперь придумай когда их передавать и передавай точно так же.

рони 18.08.2016 10:52

AlTiantum,
сделать 1 массив из 3 и отсортировать

warren buffet 18.08.2016 10:53

Или тебе подряд надо запихивать?

var times = {
   0:['9:30','10:30','11:40','11:45','11:50','12:30','13:20','14:06'],
   1:['8:04', '9:55',"10:35"],
   2:['22:22','22:53' ,'23:44','23:59','00:56']
}

for(var t in times)
   timerCurrentBuss(times[t]);


Предвосхищаю вопрос как вывести метку номера. )))

AlTiantum 18.08.2016 11:07

Спасибо!:thanks: Вроде дошло, решил для саморазвития js изучить.

warren buffet 18.08.2016 11:11

Ну то есть допустим номер маршрута - это метка, следовательно придется модифицировать функцию, чтобы она выводила все маршруты на ближайшее время.

AlTiantum 18.08.2016 12:33

Цитата:

Сообщение от warren buffet
выводила все маршруты на ближайшее время.

Было бы конечно не плохо, так сделать, но с моими знаниями js, это будет очень тяжело, лучше начать с малого

warren buffet 18.08.2016 13:42

Если не менять структуру массивов, придется добавить еще аргумент.

timerCurrentBuss(time,num);

и поменять

document.getElementById("nextbusleft").innerHTML = ("Осталось минут: " + (timeLeft.minutes - time.minutes))

на

document.getElementById("nextbusleft").insertAdjac entHTML("<div>До рейса ' +num+' осталось минут: " + (timeLeft.minutes - time.minutes)+'<div>');

но тогда перед запуском цикла, придется стирать все

document.getElementById("nextbusleft").innerHTML=' ';


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