Javascript 使用Set比较数组中的唯一项
编辑: 最适用的答案是由BlueSignal提供的以下链接。它不仅解释了为什么会发生这种行为,而且为所述问题提供了解决方案 我有一个数组,我想确定所有元素是否都等于一个值。下面的代码看起来应该可以工作,但实际上不行。有人能解释一下吗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
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正是检查数组中所有元素是否相同的方法。非常抱歉,您完全正确。直到现在我才明白问题的本质,但实际上这正是你所描述的。。。