Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript检查是否存在松散比较,除了错误值_Javascript_Comparison - Fatal编程技术网

Javascript检查是否存在松散比较,除了错误值

Javascript检查是否存在松散比较,除了错误值,javascript,comparison,Javascript,Comparison,我看了一段时间,但令我惊讶的是,还没有找到任何具体的答案 我想检查数据集工具中的值是否已更改。为此,我希望使用松散比较,以便转换为字符串的等效数字(只是一个示例)不会被检测到或更改: 42 != "42" // -> false 然而,出于明显的原因,我希望严格比较虚假比较,除非它们是等效的,例如: '' != 0 // -> false, i'd like true '0' != 0 // -> false, and that's OK null != false // -

我看了一段时间,但令我惊讶的是,还没有找到任何具体的答案

我想检查数据集工具中的值是否已更改。为此,我希望使用松散比较,以便转换为字符串的等效数字(只是一个示例)不会被检测到或更改:

42 != "42" // -> false
然而,出于明显的原因,我希望严格比较虚假比较,除非它们是等效的,例如:

'' != 0 // -> false, i'd like true
'0' != 0 // -> false, and that's OK
null != false // -> true, and that's OK
undefined != null // -> false, but should be true (this case is not the priority)
有没有一种不用手动列出所有案例的有效方法

const a=parseInt(“”)!=0/->假,我想要真
常数b=parseInt('0')!=0/->false,没关系
常数c=parseInt(null)!=false/->true,没关系
常量d=parseInt(未定义)!=null/->false,但应为true(这种情况不是优先级)
常数x=parseInt(0)!=''
控制台日志(a、b、c、d、x)在一些测试之后(许多测试失败,因为null没有属性,所以没有
.toString
等等),我找到了适合的,多亏了Taki的答案,由于
NaN
转换,parseInt才是关键。最初的想法只是问题本身在代码中的简单转换:
(a&&a!=b)| |(!a&&a!=b)
,但它在
0
'0'
的特定顺序下失败。所以我做了这个测试(如果a是真的似乎没有必要的话):
(a!=b)|(!a&&parseInt(a)!==parseInt(b))

功能测试(a、b){
返回(a!=b)|(!a&&parseInt(a)!==parseInt(b));
}
var a=test(“”,0),//->false,我想要true
b=测试(0,),
c=测试(0,'0'),//->false,这样就可以了
d=测试('0',0),
e=test(null,false),//->true,这样就可以了
f=测试(假,空),
g=测试(未定义,null),/->false,但应为true(这种情况不是优先级)
h=测试(空,未定义),
i=test(“”,未定义),//以下所有内容都是错误的和不同的,所以都是正确的
j=试验(未定义,),
k=测试(“”,空),
l=测试(空,,),
m=测试('0',未定义),
n=测试(未定义“0”),
o=测试(空值,'0'),
p=测试('0',未定义),
q=test('1',true),//未指定,但在我们的数据库中true是1,所以false是可以的
r=测试(真,'1'),
s=test('42',42),//也是false,没有变化
t=试验(42,'42');

日志(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t)嗯,我认为你有点不走运,需要编写一些代码来为你做检查。你为什么不把它转换成字符串或数字来开始,而不依赖比较来改变它。另一个组件可以这样做,因为它的复杂性,我现在不想讨论它,它是一个临时的修复程序,可以完成部分技巧,除了值不是按照特定的顺序(字符串化部分可以在任意一侧):
parseInt(0)!='
为false:/n检查类型如何?使用
!=
而不是
!=
(更新的答案)这是一个想法,我将测试它,感谢您的回答不幸的是,这一个没有按其他顺序通过:
parseInt('0'))!==0
为假,但
parseInt(0)!='0'
为真。但我的示例不够详尽,所以这不是你的错,谢谢angain,添加了适合我的解决方案噢,天哪,我要回顾一下我的东西,它在与你的情况相同的情况下失败了:D