如何使用switch语句显示日期?

时间:2019-05-30 08:00:08

标签: javascript reactjs momentjs

我想使用传递数组的switch语句显示日期。数组let displaySumTimes = ['00', '00', '10']-输出:10秒

 let displaySumTimes = ['00', '00', '10'];

 const formatTime = (time) => {
  const [hour, minute, sec] = time.split(':');
  console.log([hour, minute, sec]);
  switch([hour, minute, sec]) {
    case hour > 0:
      return `${hour} h ${minute} min ${sec} sec`;
      break;
    case minute > 0:
      return `${minute} min ${sec} sec`;
      break;
    case minute < 1:
      return `${sec} sec`;
    default:
      // code block
  }  
}

 formatTime(displaySumTimes); //output 10sec

 let displaySumTimes1 = ['00', '10', '10'];


 formatTime(displaySumTimes1); //output 10min 10 sec

3 个答案:

答案 0 :(得分:4)

您的切换语法似乎不正确。您并没有在这里进行破坏,而是在新数组上进行了切换(您将在条件数组中创建该数组)。为什么不简单地将案件重构为ifs?

此外,您在数组上使用字符串方法(split)。我在您的代码中看不到任何带有“:”的字符串。如果您要使用一个看起来像['##', '##', '##']的数组,则可以使用如下ifs:

if (hour !== "00") return `${hour} h ${minute} min ${sec} sec`;
if (minute !== "00") return `${minute} min ${sec} sec`;
return `${sec} sec`;

答案 1 :(得分:2)

也许您可以采用一种实用的方法来避免使用switch语句。

例如,您可以动态构建一个列表,其中包含格式化的字符串结果的每个部分(基于输入值构建),然后join()列出一个空格字符以组成一个字符串,所需格式:

const formatTime = (time) => {
  const [h, m, s] = time;
  
  /* Dynamically build a temporary list containing each part of the formatted time depending
  on input values supplied*/
  return [].concat(
    h > 0 ? [`${ h }hr`] : [], 
    m > 0 ? [`${ m }min`] : [], 
    s > 0 ? [`${ s }sec`] : [])
  /* Join each part of the formatted time with a whitespace to achieve required formatting */
  .join(' ');
}

let displaySumTimes = ['00', '00', '10'];
let displaySumTimes1 = ['00', '10', '10'];

console.log(formatTime(displaySumTimes)); //output 10sec
console.log(formatTime(displaySumTimes1)); //output 10min 10 sec

答案 2 :(得分:-1)

有趣...

在您的功能开关中,每种情况下(小时> 0,分钟> 0和分钟<1)将数组[hour,minutes,sec]上的引用与布尔值进行比较。它不起作用...