Javascript 返回参数以重用工时计算功能

Javascript 返回参数以重用工时计算功能,javascript,function-parameter,Javascript,Function Parameter,我正在开发一个可以提供当地餐馆信息的应用程序。所有的餐厅都有营业时间。只有一些餐馆有欢乐时光。我不想两次使用相同的代码块,而是希望能够重用我的函数来确定开放时间、当前关闭时间或今天关闭时间,以确定快乐时间和工作时间 问题是,我想为每个人创建不同的消息 正如您所知,我的时间是作为一个对象从我的数据库中输入的(例如:object{Fri_c:“4:00am”、Fri_o:“3:00pm”、Mon_c:“4:00am”、Mon_o:“3:00pm”、Sat_c:“4:00am”…},因此我的很多函数都

我正在开发一个可以提供当地餐馆信息的应用程序。所有的餐厅都有营业时间。只有一些餐馆有欢乐时光。我不想两次使用相同的代码块,而是希望能够重用我的函数来确定开放时间、当前关闭时间或今天关闭时间,以确定快乐时间和工作时间

问题是,我想为每个人创建不同的消息

正如您所知,我的时间是作为一个对象从我的数据库中输入的(例如:
object{Fri_c:“4:00am”、Fri_o:“3:00pm”、Mon_c:“4:00am”、Mon_o:“3:00pm”、Sat_c:“4:00am”…}
,因此我的很多函数都是用来简单地重新格式化这些信息,以便可以进行计算

以下是我目前的代码:

var bizHours = marker.businesshour,
    hpyHours = marker.happyhour;

if (bizHours) {
    var isOpen,
        isClosed,
        isClosedToday;

    openClosed(bizHours, isOpen, isClosed, isClosedToday);
};

if (hpyHours) {
    var isHappyHour,
        notHappy,
        noHappyHour;

    openClosed(hpyHours, isHappyHour, notHappy, noHappyHour);
};

function openClosed(hours, opened, notopen, closedtoday) {

    //CALCULATE SECONDS OPEN  
    var Open = hours[openKey],
        splitOpenTime = Open.split(':'),
        secondSplitOpenTime = splitOpenTime[1].split(" "),
        secondsOpen;

    if (secondSplitOpenTime[1] == 'PM' && splitOpenTime[0] != '12') {
        secondsOpen = (+splitOpenTime[0] + 12) * 60 * 60 + (+secondSplitOpenTime[0]) * 60
    } else {
        secondsOpen = (+splitOpenTime[0]) * 60 * 60 + (+secondSplitOpenTime[0]) * 60
    }

    //CALCULATE SECONDS CLOSED
    var CloseTime = hours[closeKey],
        splitCloseTime = CloseTime.split(':'),
        secondSplitCloseTime = splitCloseTime[1].split(" "),
        secondsClose;

    if (secondSplitCloseTime[1] == 'AM' && splitOpenTime[0] != '12') {
        secondsClose = (+splitCloseTime[0]) * 60 * 60 + (+secondSplitCloseTime[0]) * 60
    } else {
        secondsClose = (+splitCloseTime[0] + 12) * 60 * 60 + (+secondSplitCloseTime[0]) * 60
    }

    //CALCULATE CURRENT-TIME IN SECONDS
    var convertTime = time.split(':'),
        secondsTime = (+convertTime[0]) * 60 * 60 + (+convertTime[1]) * 60;

    //CALCULATE CLOSE AND CURRENT TIME IF DAY-CHANGED
    if (secondsClose < secondsOpen) {
        secondsClose = secondsClose + 86400
    } else {
        secondsClose = secondsClose
    }

    if (secondsTime < secondsClose && secondsClose < secondsOpen) {
        secondsTime = secondsTime + 86400
    } else {
        secondsTime = secondsTime
    }

    // RETURN/HOISE CALCULATED RESULTS TO THE PARAMATERS
    if (secondsOpen < secondsTime && secondsTime < secondsClose) {
        return opened = 'Open until ' + closeTime;
    } else if (Open == '') {
        return notopen = weekday;
    } else {
        return closedtoday = 'closed at' + closeTime;
    };
};
var bizHours=marker.businesshour,
hpyHours=marker.happyhours;
国际单项体育联合会(工作时间){
var isOpen,
是封闭的,,
今天是封闭的;
开放关闭(营业时间、等时线、isClosed、isClosedToday);
};
如果(HPY小时){
var isHappyHour,
没什么,
不快乐;
开闭式(HPY小时、isHappyHour、notHappy、noHappyHour);
};
功能打开关闭(小时、打开、未打开、关闭今天){
//计算打开的秒数
var Open=小时[openKey],
splitOpenTime=Open.split(“:”),
secondSplitOpenTime=splitOpenTime[1]。拆分(“”),
第二种;
如果(secondSplitOpenTime[1]=“PM”&&splitOpenTime[0]!=“12”){
secondsOpen=(+splitOpenTime[0]+12)*60*60+(+secondSplitOpenTime[0])*60
}否则{
secondsOpen=(+splitOpenTime[0])*60*60+(+secondSplitOpenTime[0])*60
}
//计算关闭的秒数
var CloseTime=小时[closeKey],
splitCloseTime=CloseTime.split(“:”),
secondSplitCloseTime=splitCloseTime[1]。拆分(“”),
二次硬化;
如果(secondSplitCloseTime[1]=“AM”&&splitOpenTime[0]!=“12”){
secondsClose=(+splitCloseTime[0])*60+(+secondSplitCloseTime[0])*60
}否则{
secondsClose=(+splitCloseTime[0]+12)*60*60+(+secondSplitCloseTime[0])*60
}
//以秒为单位计算当前时间
var convertTime=time.split(“:”),
第二时间=(+convertTime[0])*60+(+convertTime[1])*60;
//如果日期发生变化,则计算关闭时间和当前时间
如果(秒时差<秒时差){
secondsClose=secondsClose+86400
}否则{
secondsClose=secondsClose
}
如果(第二时间
因此,在我的初始IF语句中,我设置了用作函数参数的变量,我希望函数能够返回/提升初始变量的值。

在你的
IF(bizHours)
/
IF(hpyHours)
块中,你调用你的
openClosed()
具有不同参数的函数,其中3个在此点为空

如果已将对象定义为“标记”,则无需执行以下操作:

var bizHours = marker.businesshour,
hpyHours = marker.happyhour;
而是检查if语句中每个参数的状态:

if(marker.businesshour){
    ...
};

if(marker.happyhour){
    ...
};
现在你必须考虑你想允许的状态。或者/或可能是真的,你可能不希望这取决于你想做什么。< /P> 对于不同的消息和重复使用相同的代码,我认为这是可行的:

var marker = {businesshour:null, happyhour:null};

function go()
{
    if (marker.businesshour) {
        alert("call your time function and pass marker.businesshour");
    };

    if (marker.happyhour) {
        alert("call your time function and pass marker.happyhour");
    };

    return marker;
}
如果您在Firefox的控制台中加载它,并将
marker.businesshour
设置为1,然后调用
go();
它就会工作