【问题标题】:Comparing unique items in arrays using Set使用 Set 比较数组中的唯一项
【发布时间】:2017-01-06 16:30:09
【问题描述】:

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

我有一个数组,我想确定是否所有元素都等于一个值。以下代码似乎应该可以工作,但事实并非如此。谁能解释一下?

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']);

欢迎提供任何信息!

【问题讨论】:

标签: javascript set


【解决方案1】:

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

new Set(array2).size === 1

正如其他答案/cmets已经提到的,

new Set(array2) == new Set(['foo'])

返回 false,因为不同的对象不相等。

理论上,您可以使用 cmets 中提到的问题中的技术检查 new Set(array2)new Set(['foo']) 的等价性,但您不需要这样做,因为检查大小是否为 1 确实可以你需要。

【讨论】:

  • 他的根本问题是不是来检查集合是否相等。他想检查数组中的所有元素是否相同。检查集合相等性只是他解决问题的一个想法。检查集合大小是否为 1 正是检查数组中所有元素是否相同的方法。
  • 真的很抱歉,你说的完全正确。直到现在我才得到潜在的问题,但实际上它正是你所描述的......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-18
  • 2015-07-19
相关资源
最近更新 更多