Javascript 如何以这种方式比较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

我需要一种方法来比较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
比较,后者的结果为
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尝试的另一个陷阱。请注意,我使用了中讨论的严格相等(==),请注意,我使用了中讨论的严格相等(==)