Операторы переключения Javascript с общими делами - PullRequest
0 голосов
/ 06 октября 2018

Я создал серию операторов переключения, которые выполняют аналогичную задачу.

В настоящее время у меня есть что-то вроде этого ...

switch(seconds % 10) {
    case 0: bs2 = "zero"; 
    break;
    case 1: bs2 = "one"; 
    break;
    case 2: bs2 = "two"; 
    break;
    case 3: bs2 = "three"; 
    break;
    case 4: bs2 = "four"; 
    break;
    case 5: bs2 = "five"; 
    break;
    case 6: bs2 = "six"; 
    break;
    case 7: bs2 = "seven"; 
    break;
    case 8: bs2 = "eight"; 
    break;
    case 9: bs2 = "nine"; 
}
document.getElementById("s2").className = bs2;

Далее следует еще один очень похожий оператор переключениятакие как ...

switch(minutes % 10) {
    case 0: bm2 = "zero"; 
    break;
    case 1: bm2 = "one"; 
    break;
    case 2: bm2 = "two"; 
    break;
    case 3: bm2 = "three"; 
    break;
    case 4: bm2 = "four"; 
    break;
    case 5: bm2 = "five"; 
    break;
    case 6: bm2 = "six"; 
    break;
    case 7: bm2 = "seven"; 
    break;
    case 8: bm2 = "eight"; 
    break;
    case 9: bm2 = "nine"; 
}
document.getElementById("m2").className = bm2;

Подобные вещи продолжаются, но я уверен, что вы поняли идею.Это работает, но, как вы можете видеть в обоих выражениях, единственными различиями являются выражения и className, в который передается результат.Меня поражает, что должен быть более эффективный способ сделать то же самое.Есть указатели?

1 Ответ

0 голосов
/ 06 октября 2018

Вы можете упростить свой код, создав функцию, подобную следующей

function getFigure(t) {
var value;
switch(t % 10) {
    case 0: value = "zero"; 
    break;
    case 1: value = "one"; 
    break;
    case 2: value = "two"; 
    break;
    case 3: value = "three"; 
    break;
    case 4: value = "four"; 
    break;
    case 5: value = "five"; 
    break;
    case 6: value = "six"; 
    break;
    case 7: value = "seven"; 
    break;
    case 8: value = "eight"; 
    break;
    case 9: value = "nine"; 
}
return value;
}
var seconds = 8;
var bm = getFigure(seconds);
console.log(bm);

Или вы можете дополнительно поддерживать массив со значениями и получать значение, как показано ниже

let arr = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
let seconds = 9;
let minutes = 2;
document.getElementById("s2").className = arr[seconds % 10];
document.getElementById("m2").className = arr[minutes % 10];
.nine {
  color: red;
}
.two {
  color: blue;
}
<div id="s2">Seconds</div>
<div id="m2">Minutes</div>
...