【问题标题】:find a pattern for this ugly switch block (JavaScript)为这个丑陋的开关块找到一个模式(JavaScript)
【发布时间】:2021-01-18 15:11:08
【问题描述】:
switch (`(${wf}, ${hf})`) {
    case '(0, 0)': return 0;
    case '(1, 0)': return 1;
    case '(2, 0)': return 2;
    case '(0, 1)': return 3;
    case '(1, 1)': return 4;
    case '(2, 1)': return 5;
    case '(0, 2)': return 6;
    case '(1, 2)': return 7;
    case '(2, 2)': return 8;
}

有没有一种简单的方法可以做到这一点? 我试图找到一种模式,但找不到。

【问题讨论】:

  • 也许当翻转它们时,模式会变得更明显?只是两个trits

标签: javascript switch-statement


【解决方案1】:

你可以计算价值。

(wf, hf) => 3 * hf + wf;

【讨论】:

  • 漂亮但完全不可读或无法猜测发生了什么
  • @mplungjan,我什至不知道wfhf 的含义。反正。我个人会更改参数。
  • 非常感谢它的工作......离开这里丑陋的开关语句
  • hf - heightFactor, wf - widthFactor…………其实是我的vue项目……解释起来很复杂
【解决方案2】:

非常短:三进制(以 3 为底):

console.log(parseInt(`${hf}${wf}`,3))

其他解决方案仍可作为值读取

const vals = ['00','10','20',
              '01','11','21',
              '02','12','22'];

const wf = 0, hf = 2
console.log(vals.indexOf(`${wf}${hf}`))

【讨论】:

  • 是的,它可以工作,但如果添加更多值会变得冗长
  • 查看我的更新:parseInt(`${hf}${wf}`,3)
  • 是基数 3 吗?
猜你喜欢
  • 2022-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-11
  • 2021-04-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多