Добавить параметр в массив и оценить каждый элемент массива

1

У меня есть сценарий, в котором я нажимаю каждое значение параметра (Date) в массив и оценивая каждый элемент.

   if(frame.name == 'bookingConfirmedMbox')
{
            var checkinEligible= "false";

            var currDate = Date.parse(new Date());

            var depDate = frame.param(itineraryParamDate);

            var departureDate = depDate.toString();
            var travelDateArr = new Array();

            travelDateArr.push(depDate);

            console.log(travelDateArr);
            var travelDateArrlen = travelDateArr.length;

                for (var i=0 ; i< travelDateArrlen ; i++)
                    {
                        var travelDate = travelDateArr[i].toString();
                        var depaDate = travelDate.replace(/(\d{2})(\d{2})(\d{4})/, "$2/$1/$3");
                        var dDate= Date.parse(new Date(depaDate));
                        var timeDiff = parseInt(dDate - currDate);
                        var daysDiff = Math.floor(timeDiff / (1000 * 60 * 60 * 24));
                    }

            if (daysDiff >= 2 && daysDiff  <=7 )
            {
            checkinEligible="true";
            }       
            else
            {
            checkinEligible="false";
            }

return checkinEligible;
}

здесь, itineraryParamDate - это имя параметра фрейма, а значение frame.param('itineraryParamDate') получает и добавляется в array.

Этот скрипт оценивает значение false, если я задаю значение itineraryParamDate как 30112018//ddmmyyyy.It должен оцениваться как true.

Мое сомнение → var travelDate = i.toString(); не оценивает правильность значения. Может кто-нибудь посоветует мне об этом?

  • 4
    Пожалуйста, сведите вашу проблему к работоспособному примеру без зависимостей от внешнего состояния и укажите ожидаемый результат
Теги:

1 ответ

1

function Test() {
  // 
  var frame = new Object;
  frame.name = 'bookingConfirmedMbox';

  var checkinEligible = false;
  var currDate = null;
  var strDepDate = "";
  var travelDateArr = [];
  var travelDateArrlen = 0;
  var travelDate = "";
  var dDate = "";
  var timeDiff = 0;
  var daysDiff = 0;

  if (frame.name == 'bookingConfirmedMbox') {
    currDate = Date.parse(new Date());

    strDepDate = "30112018";

    travelDateArr.push(strDepDate);

    travelDateArrlen = travelDateArr.length;

    for (let i = 0; i < travelDateArrlen; i++) {
      travelDate = strDepDate.toString();

      strDepDate = travelDate.replace(/(\d{2})(\d{2})(\d{4})/, "$2/$1/$3");



      dDate = Date.parse(new Date(strDepDate));

      timeDiff = parseInt(dDate - currDate);

      daysDiff = Math.floor(timeDiff / (1000 * 60 * 60 * 24));
    }
    if (daysDiff >= 2 || daysDiff <= 7) {

      checkinEligible = true;
    } else {
      checkinEligible = false;
    }

  }
  return checkinEligible;
} // end Test();

var retval = Test();
var res = (retval) ? "Test worked" : "Test failed";
console.log(res);

У ОП есть ряд проблем с образцом кода. Если кто-то хочет получить истинный или ложный результат, тогда нужно использовать логические значения true и false, потому что "true" и "false" являются непустыми строками, поэтому каждый оценивает как true. Если кто-то хочет вернуть значение, то нужно использовать функцию, которая в этом случае называется Test(). Кроме того, внутреннее условие if должно использовать логическое ИЛИ вместо логического И. Когда daysDiff имеет значение 34, как это произошло 26 октября с этим кодом, тогда условие if имеет смысл только при использовании логического ИЛИ. Наконец, нет необходимости переопределять переменные в for-loop. Лучше определить значения вне цикла и установить значения по умолчанию. В цикле for вы можете переназначить значения для этих переменных.

  • 0
    Привет @ Slevy1, выше сценарий работает нормально. Спасибо. Однако, если я добавлю новое значение в strDepDate, тогда это значение не будет добавлено в массив travelDateArr. Я хочу добавить каждое новое значение strDepDate в массив travelDateArr
  • 0
    @AmbikaTewari Мне нужно увидеть код, который вы используете, чтобы добавить новое значение в strDepDate. Как strDepDate приобретает новые значения?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню