【问题标题】:Switch statement doesn't works as expected [duplicate]Switch 语句不能按预期工作 [重复]
【发布时间】:2017-09-21 15:57:03
【问题描述】:

我试图在这里了解我的代码有什么问题:

 switch(arr){
case [0, 0]:
  console.log("hereee")
  return 0;
case [0, 1]:
  return 1;
case [0, 2]:
  return 2;
case [1, 0]:
  return 3;
case [1, 1]:
  return 4;
case [1, 2]:
  return 5;
case [2, 0]:
  return 6;
case [2, 1]:
  return 7;
case [2, 2]:
  return 8;
default:
  console.log("but heree")
  return -1;
        }

如您所见,它检查数组并应返回对提供的数组值进行防御的数字,例如,当我通过 [1, 2] 我希望输出为 5,如果我通过 [0, 0] 它应该是 0,对?但我总是得到默认值-1;请帮助我理解这背后的原因。

【问题讨论】:

  • 这里有一个好方法。根据这个答案,数组将始终返回 false。 stackoverflow.com/questions/17818127/…
  • 因为这不是您比较数组的方式... if ([0,0]===[0,0]) 永远不会工作。你将不得不重新考虑它。
  • 在 JS 中,数组是通过引用而不是值来比较的,因此 [] !== [][1, 2] !== [1, 2]
  • @Carcigenicate 这也行不通....
  • 谢谢大家,我怀疑是这种情况,我想我将不得不切换到 if 语句并与 == 进行比较,或者还有其他更好的解决方案吗?

标签: javascript arrays switch-statement


【解决方案1】:

您只能将switch 用于基元。 JS在switch语句中使用===进行比较,[0,0]===[0,0]就是false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-22
    • 1970-01-01
    • 2019-01-06
    • 1970-01-01
    • 1970-01-01
    • 2013-07-25
    • 1970-01-01
    相关资源
    最近更新 更多