【问题标题】:console log and adding values from multiple switch statements控制台日志并从多个 switch 语句中添加值
【发布时间】:2019-10-30 14:07:27
【问题描述】:

我正在尝试从我的 switch 语句(valuebreakMonValuefinishMonValue)中添加多个值,这样我就可以将console.log 这些值加在一起,并且想知道这是否可能?

未定义 startMonTimeStr 变量

function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }

function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }

function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }

function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }

var timeStringToValue = function timeStringToValue(timeStr) {
  var _timeStr$match = timeStr.match(/(\d+):(\d+) ([ap]m)/),
      _timeStr$match2 = _slicedToArray(_timeStr$match, 4),
      hours = _timeStr$match2[1],
      minutes = _timeStr$match2[2],
      ampm = _timeStr$match2[3];

  var ampmHourModifier = ampm === 'pm' ? 12 : 0;
  return Number(hours) + ampmHourModifier + minutes / 60;


};

var startMonTimeStr = $('.start-time-monday option:selected').text();
var startMonValue = timeStringToValue(startMonTimeStr);


console.log(timeStringToValue(StartMonValue));
console.log(timeStringToValue('3:30 pm'));

它们的布局如下:

$('.start-time-monday').each(function(){
    $(this).change(function(){

        var monTime = 


        $('.start-time-monday').each(function(){
        $(this).change(function(){

                var monTime = $('.start-time-monday option:selected').text();
                var value = "";

            switch(monTime){
              case "7:00 am":
                value = 7.00;
                        break;
              case "7:15 am":
                value = 7.25;
                        break;
              case "7:30 am":
                value = 7.50;
                        break;
              case "7:45 am":
                value = 7.75;
                        break;
              case "8:00 am":
                value = 8.00;
                        break;
              case "8:15 am":
                value = 8.25;
                        break;
              case "8:30 am":
                value = 8.50;
                        break;
              case "8:45 am":
                value = 8.75;
                        break;
              case "9:00 am":
                value = 9.00;
                        break;
              case "9:15 am":
                value = 9.25;
                        break;
              case "9:30 am":
                value = 9.50;
                        break;
              case "9:45 am":
                value = 9.75;
                        break;
              case "10:00 am":
                value = 10.00;
                        break;
              case "10:15 am":
                value = 10.25;
                        break;
              case "10:30 am":
                value = 10.50;
                        break;
              case "10:45 am":
                value = 10.75;
                        break;
              case "11:00 am":
                value = 11.00;
                        break;
              case "11:15 am":
                value = 11.25;
                        break;
              case "11:30 am":
                value = 11.50;
                        break;
              case "11:45 am":
                value = 11.75;
                        break;
              case "12:00 pm":
                value = 12.00;
                        break;
              case "12:15 pm":
                value = 12.25;
                        break;
              case "12:30 pm":
                value = 12.50;
                        break;
              case "12:45 pm":
                value = 12.75;
                        break;
              case "1:00 pm":
                value = 13.00;
                        break;
              case "1:15 pm":
                value = 13.25;
                        break;
              case "1:30 pm":
                value = 13.50;
                        break;
              case "1:45 pm":
                vaue = 13.75;
                        break;
              case "2:00 pm":
                value = 14.00;
                        break;
              case "2:15 pm":
                value = 14.25;
                        break;
              case "2:30 pm":
                value = 14.50;
                        break;
              case "2:45 pm":
                value = 14.75;
                        break;
              case "3:00 pm":
                value = 15.00;
                        break;
              case "3:15 pm":
                value = 15.25;
                        break;
              case "3:30 pm":
                value = 15.50;
                        break;
              case "3:45 pm":
                value = 15.75;
                        break;
              case "4:00 pm":
                value = 16.00;
                        break;
              case "4:15 pm":
                value = 16.25;
                        break;
              case "4:30 pm":
                value = 16.50;
                        break;
              case "4:45 pm":
                value = 16.75;
                        break;
              case "5:00 pm":
                value = 17.00;
                        break;
              case "5:15 pm":
                value = 17.25;
                        break;
              case "5:30 pm":
                value = 17.50;
                        break;
              case "5:45 pm":
                value = 17.75;
                        break;
              case "6:00 pm":
                value = 18.00;
                        break;
              case "6:15 pm":
                value = 18.25;
                        break;
              case "6:30 pm":
                value = 18.50;
                        break;
              case "6:45 pm":
                value = 18.75;
                        break;
              case "7:00 pm":
                value = 19.00;
                        break;
              case "7:15 pm":
                value = 19.25;
                        break;
              case "7:30 pm":
                value = 19.50;
                        break;
              case "7:45 pm":
                value = 19.75;
                        break;
                    default:
                      value = '0';
                        break;
              }

          //var startTimeMon = timeSwitch(monTime) ;
          console.log(value, 'Monday Start time value');
        });

  });


    $('.meal-break-monday').each(function(){
    $(this).change(function(){

            var breakMonTime = $('.meal-break-monday option:selected').text();
            var breakMonvalue = "";

        switch(breakMonTime){
          case "15 mins":
            breakMonvalue = 0.25;
                    break;
          case "30 mins":
            breakMonvalue = 0.50;
                    break;
          case "45 mins":
            breakMonvalue = 0.75;
                    break;
          case "60 mins":
            breakMonvalue = 1.00;
                    break;
                default:
                  value = '0';
                    break;
          }

      //var startTimeMon = timeSwitch(monTime) ;
      console.log(breakMonvalue, 'Mon BREAK time value');
    });


});





//finish time monday
  $('.finish-time-monday').each(function(){
    $(this).change(function(){

            var finishMonTime = $('.finish-time-monday option:selected').text();
            var finishMonvalue = "";

        switch(finishMonTime){
          case "7:00 am":
            finishMonvalue = 7.00;
                    break;
          case "7:15 am":
            finishMonvalue = 7.25;
                    break;
          case "7:30 am":
            finishMonvalue = 7.50;
                    break;
          case "7:45 am":
            finishMonvalue = 7.75;
                    break;
          case "8:00 am":
            finishMonvalue = 8.00;
                    break;
          case "8:15 am":
            finishMonvalue = 8.25;
                    break;
          case "8:30 am":
            finishMonvalue = 8.50;
                    break;
          case "8:45 am":
            finishMonvalue = 8.75;
                    break;
          case "9:00 am":
            finishMonvalue = 9.00;
                    break;
          case "9:15 am":
            finishMonvalue = 9.25;
                    break;
          case "9:30 am":
            finishMonvalue = 9.50;
                    break;
          case "9:45 am":
            finishMonvalue = 9.75;
                    break;
          case "10:00 am":
            finishMonvalue = 10.00;
                    break;
          case "10:15 am":
            finishMonvalue = 10.25;
                    break;
          case "10:30 am":
            finishMonvalue = 10.50;
                    break;
          case "10:45 am":
            finishMonvalue = 10.75;
                    break;
          case "11:00 am":
            finishMonvalue = 11.00;
                    break;
          case "11:15 am":
            finishMonvalue = 11.25;
                    break;
          case "11:30 am":
            finishMonvalue = 11.50;
                    break;
          case "11:45 am":
            finishMonvalue = 11.75;
                    break;
          case "12:00 pm":
            finishMonvalue = 12.00;
                    break;
          case "12:15 pm":
            finishMonvalue = 12.25;
                    break;
          case "12:30 pm":
            finishMonvalue = 12.50;
                    break;
          case "12:45 pm":
            finishMonvalue = 12.75;
                    break;
          case "1:00 pm":
            finishMonvalue = 13.00;
                    break;
          case "1:15 pm":
            finishMonvalue = 13.25;
                    break;
          case "1:30 pm":
            finishMonvalue = 13.50;
                    break;
          case "1:45 pm":
            finishMonvaue = 13.75;
                    break;
          case "2:00 pm":
            finishMonvalue = 14.00;
                    break;
          case "2:15 pm":
            finishMonvalue = 14.25;
                    break;
          case "2:30 pm":
            finishMonvalue = 14.50;
                    break;
          case "2:45 pm":
            finishMonvalue = 14.75;
                    break;
          case "3:00 pm":
            finishMonvalue = 15.00;
                    break;
          case "3:15 pm":
            finishMonvalue = 15.25;
                    break;
          case "3:30 pm":
            finishMonvalue = 15.50;
                    break;
          case "3:45 pm":
            finishMonvalue = 15.75;
                    break;
          case "4:00 pm":
            finishMonvalue = 16.00;
                    break;
          case "4:15 pm":
            finishMonvalue = 16.25;
                    break;
          case "4:30 pm":
            finishMonvalue = 16.50;
                    break;
          case "4:45 pm":
            finishMonvalue = 16.75;
                    break;
          case "5:00 pm":
            finishMonvalue = 17.00;
                    break;
          case "5:15 pm":
            finishMonvalue = 17.25;
                    break;
          case "5:30 pm":
            finishMonvalue = 17.50;
                    break;
          case "5:45 pm":
            finishMonvalue = 17.75;
                    break;
          case "6:00 pm":
            finishMonvalue = 18.00;
                    break;
          case "6:15 pm":
            finishMonvalue = 18.25;
                    break;
          case "6:30 pm":
            finishMonvalue = 18.50;
                    break;
          case "6:45 pm":
            finishMonvalue = 18.75;
                    break;
          case "7:00 pm":
            finishMonvalue = 19.00;
                    break;
          case "7:15 pm":
            finishMonvalue = 19.25;
                    break;
          case "7:30 pm":
            finishMonvalue = 19.50;
                    break;
          case "7:45 pm":
            value = 19.75;
                    break;
                default:
                  value = '0';
                    break;
          }

      //var startTimeMon = timeSwitch(monTime) ;
      console.log(finishMonvalue, 'Mon FINISH time value');
    });


});

【问题讨论】:

    标签: javascript jquery switch-statement


    【解决方案1】:

    用数学将时间字符串解析成数字可能会更优雅,例如:

    const timeStringToValue = (timeStr) => {
      const [, hours, minutes, ampm] = timeStr.match(/(\d+):(\d+) ([ap]m)/);
      const ampmHourModifier = ampm === 'pm' ? 12 : 0;
      return Number(hours) + ampmHourModifier + (minutes / 60)
    };
    
    console.log(timeStringToValue('10:00 am'));
    console.log(timeStringToValue('3:30 pm'));

    然后你就可以调用它了:

    const startMonTimeStr = $('.start-time-monday option:selected').text();
    const startMonValue = timeStringToValue(startMonTimeStr);
    

    const finishMonTimeStr = $('.finish-time-monday option:selected').text();
    const finishMonValue = timeStringToValue(finishMonTimeStr);
    

    switch 在大多数情况下是不必要的冗长和丑陋的,这也不例外。

    如果要将所有总计相加,请更改计算每个小计,例如:

    const getBreakTotal = () => {
      const minutes = $('.meal-break-monday option:selected').text().match(/^\d+/)[0];
      return minutes / 60;
    };
    const getAllTotals = () => {
      const startTotal = timeStringToValue($('.start-time-monday option:selected').text());
      const breakTotal = getBreakTotal();
      const finishTotal = timeStringToValue($('.finish-time-monday option:selected').text());
      console.log(startTotal + breakTotal + finishTotal);
    };
    
    $('.start-time-monday, .meal-break-monday, .finish-time-monday').on('change', getAllTotals);
    

    【讨论】:

    • 嘿,谢谢,我实际上是在尝试给时间赋值,因为最后我希望能够计算出这个,因此为什么我要做一个给它们赋值的 switch case。你知道如何使用这些值吗?
    • 目前还不清楚您正在寻找什么附加功能 - 在答案中,timeStr 是动态的,任何东西都可以调用timeStringToValue,无论何时需要解析字符串,以及适当的值将被返回。
    • 下拉菜单会有时间引用一个值,这些值将被计算以获得总小时数。如果有帮助
    • 只需将从timeStringToValue..检索到的所有值相加即可?
    • 谢谢,抱歉,我只是不理解你的答案,因此我发布了多个帖子,但是调用该函数的愚蠢问题是 console.log(timeStringToValue(const finishMonTimeStr = $('.finish-time -星期一选项:已选择').text(); ));我只是不是技术人员哈哈
    猜你喜欢
    • 2021-12-09
    • 2012-10-26
    • 1970-01-01
    • 2018-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多