![](/img/trans.png)
[英]Best way to check if values of two arrays are the same/equal in JavaScript
[英]Javascript/jQuery: Check if two values are equal regardless of data type?
我有一个if条件,无论数据类型如何,我都需要检查A是否具有与B相同的值,例如
if (A == B) {
//body of if statement
}
但是如果==
出现,则服务器签入验证将拒绝。 它将要求将其更改为===
(但我无法更改)。
在A
和B
的可能值和类型为
String, Number, null, '', undefined, NaN
看起来很简单,但可能只是逻辑错误... :)
从根本上讲, ==
有有效的用例,因此我建议找到可以更改该规则的人并让他们这样做。
在这种情况下,您可以编写一个自己的函数来执行==
工作,即所谓的抽象相等比较算法 ,然后使用该函数代替==
:
比较x == y(其中x和y是值)产生true或false。 这样的比较执行如下:
- 如果类型 (x)与类型 (y)相同,则
- 返回执行严格相等比较 x === y的结果。
- 如果x为null且y未定义,则返回true。
- 如果x未定义且y为null,则返回true。
- 如果类型 (x)为数字, 类型 (y)为字符串,则返回比较结果x == ToNumber (y)。
- 如果类型 (x)为String, 类型 (y)为Number,则返回比较结果ToNumber (x)== y。
- 如果类型 (x)为布尔值,则返回比较结果ToNumber (x)== y。
- 如果类型 (y)为布尔值,则返回比较结果x == ToNumber (y)。
- 如果类型 (x)为字符串,数字或符号,并且类型 (y)为对象,则返回比较结果x == ToPrimitive (y)。
- 如果类型 (x)为对象, 类型 (y)为字符串,数字或符号,则返回比较结果ToPrimitive (x)== y。
- 返回false。
规范中明确定义了上面使用的每个抽象操作的确切实现。
我找到了(解决方法)
A = A ? A.toString() : A;
B = B ? B.toString() : B;
if(A === B){
//Rock it
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.