Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.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 使用Set比较数组中的唯一项_Javascript_Set - Fatal编程技术网

Javascript 使用Set比较数组中的唯一项

Javascript 使用Set比较数组中的唯一项,javascript,set,Javascript,Set,编辑: 最适用的答案是由BlueSignal提供的以下链接。它不仅解释了为什么会发生这种行为,而且为所述问题提供了解决方案 我有一个数组,我想确定所有元素是否都等于一个值。下面的代码看起来应该可以工作,但实际上不行。有人能解释一下吗 var array1 = ['foo', 'bar', 'baz']; var array2 = ['foo', 'foo', 'foo']; //I expect this to be false and it is new Set(array1) == new

编辑: 最适用的答案是由BlueSignal提供的以下链接。它不仅解释了为什么会发生这种行为,而且为所述问题提供了解决方案

我有一个数组,我想确定所有元素是否都等于一个值。下面的代码看起来应该可以工作,但实际上不行。有人能解释一下吗

var array1 = ['foo', 'bar', 'baz'];
var array2 = ['foo', 'foo', 'foo'];

//I expect this to be false and it is
new Set(array1) == new Set(['foo']);

//I expect this to be true and it is not
new Set(array2) == new Set(['foo']);

欢迎提供任何信息

检查集合的大小是否为一:

new Set(array2).size === 1
正如其他答案/评论已经提到的那样

new Set(array2) == new Set(['foo'])
返回false,因为不同的对象不相等


理论上,你可以使用评论中提到的问题中的技巧来检查
新集合(array2)
新集合(['foo'])
的等价性,但你不需要这样做,因为检查大小是否为1正是你所需要的。

可能的重复,这里有一个,同样链接在重复项中如果您有两个完全相同的对象也没关系-
object1==object2
只有当它们实际上是完全相同的对象时才会计算为true。您正在比较对象,但它们可能与您认为应该的不一样。看一看,你应该检查集合的大小是否为1。还有一个重复:他的根本问题不是检查集合是否相等。他想检查数组中的所有元素是否相同。检查集合相等性只是他解决问题的一个想法。检查设置的大小是否为1正是检查数组中所有元素是否相同的方法。非常抱歉,您完全正确。直到现在我才明白问题的本质,但实际上这正是你所描述的。。。