switch не срабатывает на 1 параметре

85
03 марта 2021, 18:40

При указании числа больше 1 к единице времени добавляется буква 's' для отображения множественного числа. На первом параметре label1 не срабатывает, а на втором параметре label2 срабатывает и добавляет букву 's'. Как сделать, чтобы условие везде срабатывало?

function timeAdder(value1,label1,value2,label2){ 
  switch(value1,label1,value2,label2){ 
    case value1:  
        typeof value1 === 'number' ? value1 : false; 
        break; 
    case label1:  
        label1 = (value1 > 1 && label1[label1.length - 1] !== 's') ? (label1  + 's') : label1; 
        break; 
    case value2:  
        typeof value2 === 'number' ? value2 : false; 
        break; 
    case label2:  
        label2 = (value2 > 1 && label2[label2.length - 1] !== 's') ? (label2  + 's') : label2; 
        break; 
     
  } 
  return value1 + ', ' + label1 + ', ' + value2 + ', ' + label2; 
} 
       
console.log(timeAdder(12,'minute',5,'hour'))

Answer 1

Не срабатывает, так как в switch может срабатывать только выводится только одно условие, последнее верное, что бы вывелось два их просто объединяют, вот так.

  function timeAdder(value1,label1,value2,label2){
  switch(value1,label1,value2,label2){
    case value1: 
        typeof value1 === 'number' ? value1 : false;
        break;
    case label1:
    case label2:  
        label1 = (value1 > 1 && label1[label1.length - 1] !== 's') ? (label1  + 's') : label1;
 label2 = (value2 > 1 && label2[label2.length - 1] !== 's') ? (label2  + 's') : label2;
        break;
    case value2: 
        typeof value2 === 'number' ? value2 : false;
        break; 
  }
  return value1 + ', ' + label1 + ', ' + value2 + ', ' + label2;
}
console.log(timeAdder(12,'minute',5,'hour'))
Answer 2

Не самый лучший, но рабочий вариант.

function timeAdder(value1,label1,value2,label2){ 
    switch(value1){ 
        case value1:  
            value1 = typeof value1 !== 'number' ? false : value1; 
            break; 
    } 
    switch(value2) { 
        case value2:  
            value2 = typeof value2 !== 'number' ? false : value2; 
            break; 
    } 
    switch(label1) { 
        case label1:  
            label1 = (value1 > 1 && label1[label1.length - 1] !== 's') ? (label1  + 's') : label1; 
            break; 
    } 
    switch(label2) { 
        case label2:  
            label2 = (value2 > 1 && label2[label2.length - 1] !== 's') ? (label2  + 's') : label2; 
    } 
  return value1 + ', ' + label1 + ', ' + value2 + ', ' + label2; 
} 
       
console.log(timeAdder(1,'minute',17,'hour'));

READ ALSO
Передача состояния radiobutton в форму

Передача состояния radiobutton в форму

Всем доброго дня, подскажите я получаю состояние радиобаттонов через следующую конструкцию

105
Web Scrapping Node Js

Web Scrapping Node Js

Какую библиотеку можно использовать для скраппинга динамических данных? Например, библиотека request присылает страницу, где еще js скрипты...

84
Gravity forms js API

Gravity forms js API

Всем привет! взял пример с документации: Форма на сайте есть, айди полей и формы указаны правильно, подключен скрипт в functionsphp jquery подключен,...

91