Javascript 如何以这种方式比较3个值?
我需要一种方法来比较3个值,如下所示:Javascript 如何以这种方式比较3个值?,javascript,Javascript,我需要一种方法来比较3个值,如下所示: 'aaa'=='aaa'=='aaa' false 但正如你所看到的,它不起作用。为什么? 对于2个值,它显然有效: 'aaa'=='aaa' true 比较前两个值的结果为true,然后将true与“aaa”进行比较,后者的结果为false 要使其正确,您可以编写: const a='aaa'; 常数b='aaa'; 常数c='aaa'; log(a==b&&b==c)//true比较前两个值的结果为true,然后将true与比较,后者的结果为fa
'aaa'=='aaa'=='aaa'
false
但正如你所看到的,它不起作用。为什么?
对于2个值,它显然有效:
'aaa'=='aaa'
true
比较前两个值的结果为
true
,然后将true
与“aaa”
进行比较,后者的结果为false
要使其正确,您可以编写:
const a='aaa';
常数b='aaa';
常数c='aaa';
log(a==b&&b==c)//true
比较前两个值的结果为true
,然后将true
与比较,后者的结果为false
要使其正确,您可以编写:
const a='aaa';
常数b='aaa';
常数c='aaa';
log(a==b&&b==c)//如果将这些字符串存储在变量中,则可以执行以下操作
a='aaa',b='aaa',c='aaa'
log(a==b&&b==c)//true
如果这些字符串存储在变量中,则可以执行以下操作
a='aaa',b='aaa',c='aaa'
log(a==b&&b==c)//true
表达式'aaa'='aaa'='aaa'='aaa'
的计算结果为('aaa'='aaa')='aaa'
括号中的子表达式的计算结果为true
,它变为true=='aaa'
,这是false
,因为在比较两个不同类型的值时,首先是JavaScript。它将布尔值true
转换为数字1
,将字符串'aaa'
转换为数字0
,这显然是不相等的
你需要的是
console.log('aaa'='aaa'&&'aaa'='aaa')
表达式'aaa'='aaa'='aaa'
的计算结果为('aaa'='aaa')='aaa'
括号中的子表达式的计算结果为true
,它变为true=='aaa'
,这是false
,因为在比较两个不同类型的值时,首先是JavaScript。它将布尔值true
转换为数字1
,将字符串'aaa'
转换为数字0
,这显然是不相等的
你需要的是
console.log('aaa'='aaa'&&&aaa'='aaa')
您可以将所有值放入一个数组中,然后使用Array.prototype.each()
函数测试是否所有值都满足您传递给它的回调中定义的条件:
a='aaa',b='aaa',c='aaa'
设arr=[a,b,c]
设arr2=[1,2,1]
log(arr.every(i=>[arr[0]].包括(i)))
console.log(arr2.every(i=>[arr2[0]]].includes(i))
您可以将所有值放在一个数组中,然后使用Array.prototype.every()
函数测试是否所有值都满足传递给它的回调中定义的条件:
a='aaa',b='aaa',c='aaa'
设arr=[a,b,c]
设arr2=[1,2,1]
log(arr.every(i=>[arr[0]].包括(i)))
console.log(arr2.every(i=>[arr2[0]]].includes(i))
此外,您可以从给定序列中获得唯一值,如果您获得单个元素,则因为所有元素都相等:
constsame=xs=>新集合(xs)。大小===1
常数x='aaa'
常数y='aaa'
常数z='aaa'
常量AreName=相同([x,y,z])
console.log(AreName)
常数x_u2;='aaa'
常数y_uu2;='bbb'
常数z_u3;='aaa'
常量AreName=相同([x,y,z])
console.log(arame_)
此外,您可以从给定的序列中获得唯一的值,如果获得单个元素,则因为所有元素都相等:
constsame=xs=>新集合(xs)。大小===1
常数x='aaa'
常数y='aaa'
常数z='aaa'
常量AreName=相同([x,y,z])
console.log(AreName)
常数x_u2;='aaa'
常数y_uu2;='bbb'
常数z_u3;='aaa'
常量AreName=相同([x,y,z])
console.log(arame)
因为'aaa'=='aaa'
,它的计算结果为true=='aaa'
。如果要检查3个变量是否都相同,请执行If(a==b&&b==c){}
'aaa'==='aaa'&&&aaa'=='aaa'
@Archer是否有一种简单的方法可以以类似的方式比较3个值?是的-请参阅链接的重复问题,或者我在注释中添加的额外位。因为'aaa'='aaa'='aaa'
,它的计算结果为true==“aaa”
,即false。如果要检查3个变量是否都相同,请执行If(a==b&&b==c){}
'aaa'==='aaa'&&&aaa'=='aaa'
@Archer是否有一种简单的方法可以以类似的方式比较3个值?是的-请参阅链接的重复问题,或我在注释中添加的额外位。2==2==false
,1==1==1=>true
。OP尝试的另一个陷阱。2==2=>false
,1==1=>true
。OP尝试的另一个陷阱。请注意,我使用了中讨论的严格相等(==),请注意,我使用了中讨论的严格相等(==)