【发布时间】: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