【问题标题】:How can I implement logics without if else, switch or a built-in function in javascript如何在没有 if else、switch 或 JavaScript 内置函数的情况下实现逻辑
【发布时间】:2021-11-05 11:44:08
【问题描述】:

假设我们有一个函数,它在向它传递 5 时返回 3,在向它传递 3 时返回 5。我知道使用 if else 和 switch 很容易。

例如

function countReturn(number){
  if(number === 3){
  return 5
 }

  if(number === 5){
  return 3
 }

}

但是如果没有 if else、switch 或任何内置函数,我如何实现相同的逻辑呢?

【问题讨论】:

  • return {3:5,5:3}[number]?
  • 您可以使用三元运算符。 return number === 3 ? 5 : 3
  • 这里的实际目标是什么? countReturn(1)countReturn(12) 应该产生什么?
  • @PatrickEvans,看起来像this

标签: javascript logic


【解决方案1】:

您可以将返回值存储在数组中:

function countReturn(n) {
  let a = [,,,5,,3];
  return a[n];
}

这将为其他输入返回 undefined,就像您的原始代码一样。

【讨论】:

  • 标记你的答案。虽然提供空元素是无效的,但它确实符合逻辑。
  • @WahasAliMughal 在数组文字中包含空元素是有效的。
【解决方案2】:

您可以取总和 (3 + 5) 并返回实际数字的增量。

function threeOrFive(value) {
    return 8 - value;
}

console.log(threeOrFive(3)); // 5
console.log(threeOrFive(5)); // 3

【讨论】:

  • threeOrFive(1) 似乎返回 7,而不是在这种情况下返回 undefined 的 OP 函数。不过,不确定 OP 实际希望使用非 3 和非 5 值发生什么。
【解决方案3】:

你可以用这样的三元来做到这一点

return number === 3 ? 5 : (number === 5 ? 3 : 0);

或者你可以用对象来做

const obj = {
  "5": 3,
  "3": 5
};
return obj[number];

【讨论】:

  • 我不确定条件表达式是否与if 不同。
  • @VLAZ 我添加了一个带有对象的方法。如果不允许使用三进制
  • 三元是条件语句。所以无法标记你的答案。
  • @WahasAliMughal 我明白了,请考虑您未来开发的对象方法
【解决方案4】:

我们可以返回 5 到 3 之间的异或值:

return number ^ 6

实现相同的逻辑,当给定5时它会返回3,反之亦然

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 1970-01-01
    • 2016-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多