比较阵列中的唯一项目编辑: faintsignal提供的链接是最适用的答案。它不仅解释了为什么会发生这种情况,而且为解决所述问题提供了解决方案。使用Set
我有一个数组,我想确定是否所有元素都等于单个值。下面的代码看起来应该可以工作,但它不会。谁能解释一下?
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']);
任何信息将不受欢迎!
可能重复[为什么两个相同的对象不相等?](http://stackoverflow.com/questions/11704971/why-are-two-identical-objects-not-equal-to-each-其他),这里是一个[如何比较](http://stackoverflow.com/questions/201183/how-to-determine-equality-for-two-javascript-objects),也链接在重复 – baao
它doesn'如果你有两个完全相同的对象,那么'object1 == object2'只有在它们确实是*完全相同的对象*时才会计算为真。 – Santi
您正在比较对象,并且它们与您认为应该的方式不同。看看[这里](http://stackoverflow.com/questions/201183/how-to-determine-equality-for-two-javascript-objects) – Noelkd