Javascript 如何比较currentDate和ExpirationDate?

Javascript 如何比较currentDate和ExpirationDate?,javascript,Javascript,伙计们! 我在《代码战争》上演卡塔,一直坚持着这个 我几乎通过了那里所有的考试,25分之24。 我收到消息——预期为:true,但实际为:undefined 在该特定测试中,2013,11,8为当前日期,2014,11,5为到期日期。 但我找不到哪里有错误。 非常感谢你 function checkCoupon(enteredCode, correctCode, currentDate, expirationDate) { var months = ['January', 'February',

伙计们! 我在《代码战争》上演卡塔,一直坚持着这个

我几乎通过了那里所有的考试,25分之24。 我收到消息——预期为:true,但实际为:undefined 在该特定测试中,2013,11,8为当前日期,2014,11,5为到期日期。 但我找不到哪里有错误。 非常感谢你

function checkCoupon(enteredCode, correctCode, currentDate, expirationDate) {
var months = ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'];
if (enteredCode === correctCode) {
    function stringToArray(string) {
        var dateCheck = string.replace(',', '').split(' ');
        months.indexOf(dateCheck[0]);
        dateCheck[0] = months.indexOf(dateCheck[0]) + 1
        for (i in dateCheck) {
            dateCheck[i] = parseInt(dateCheck[i])
        }
        dateCheck.splice(2, 0, dateCheck[0])
        dateCheck.shift()
        return dateCheck.reverse()
    }
    var currentDateVar = stringToArray(currentDate)
    var expDateVar = stringToArray(expirationDate)  
    for (var i = 0; i < currentDateVar.length; i++) {
        if (currentDateVar[i] <= expDateVar[i]) {
            if (currentDateVar[i] <= expDateVar[i] || (currentDateVar[i] > expDateVar[i] && currentDateVar[i - 1] < expDateVar[i - 1])) {
                
                if (currentDateVar[i] < expDateVar[i] || currentDateVar[i] < expDateVar[i]) {
                    console.log(`${currentDateVar} is less ${expDateVar} so it means that cupon works`)
                    return true
                }
            }
        }
        else {
            console.log('cupon is outdated')
            return false
        }
    }
}
else {
    console.log('validation didn\'t succesful')
    return false
}
功能检查优惠券(输入代码、更正代码、当前日期、过期日期){
var月数=[‘一月’、‘二月’、‘三月’、‘四月’、‘五月’、‘六月’、‘七月’、‘八月’、‘九月’、‘十月’、‘十一月’、‘十二月’];
如果(输入代码===更正代码){
函数stringToArray(字符串){
var dateCheck=string.replace(',','').split('');
月份。索引of(日期检查[0]);
dateCheck[0]=月。indexOf(dateCheck[0])+1
对于(我在日期支票中){
dateCheck[i]=parseInt(dateCheck[i])
}
dateCheck.splice(2,0,dateCheck[0])
dateCheck.shift()
returndatecheck.reverse()
}
var currentDateVar=stringToArray(currentDate)
var expDateVar=stringToArray(到期日期)
对于(变量i=0;i如果(currentDateVar[i]我为您检查了kata。首先,您在这些日期失败了:

[5,7,2000] [5,7,2000]

因此,您必须检查相同的currentDate和expirationDate。如果您这样安排代码,您可以通过所有测试

if (currentDateVar[i] <= expDateVar[i]) {
        if (currentDateVar[i] <= expDateVar[i] || (currentDateVar[i] > expDateVar[i] 
&& currentDateVar[i - 1] < expDateVar[i - 1])) {
            
            if (currentDateVar[i] < expDateVar[i] ) {
                console.log(`${currentDateVar} is less ${expDateVar} so it means that cupon works`)
                return true
            }
          
        }
      if(currentDateVar[i] <= expDateVar[i] && currentDateVar[i - 1] <= expDateVar[i - 1] && currentDateVar[i - 2] <= expDateVar[i - 2] ){
        return true;
      }
    }

if(currentDateVar[i]要使这成为一个正确的问题,我们确实需要知道您正在尝试做什么。目前您给我们的只是一段带有神秘错误消息的代码。解释目标是什么、您的方法以及出错的地方将大大增加您获得好答案的机会。因此,基本上这个函数是可行的,但我没有控制流部分存在一些问题。可能是我没有正确构建它,因此验证在某些特定情况下会导致错误。