我一直想知道为什么会这样:
var a = [[0, 1]];
a[0] == [0, 1];
将返回false
。看起来这两个数组,a[0] 和 [0, 1],尽管不是 Array 的同一个实例,但实际上是同一个对象,因为它们的所有属性都是相同的。但 JS 中并非如此,我不知道为什么。
应用于这两个数组以及更复杂的对象的哪个测试会返回 true ? (来自 jQuery 和 D3.js 的答案已被接受,我不打算使用任何其他答案)
编辑:用 JSON.stringify 包装对象似乎可行;有什么我应该注意的警告吗?
最佳答案
[等于运算符]“如果两个操作数都是对象,则当操作数引用内存中的同一对象时,JavaScript 会比较内部引用是否相等。”
参见:https://developer.mozilla.org/en/JavaScript/Reference/Operators/Comparison_Operators
所以,甚至:
[0, 1] == [0, 1]
Will 返回 false
,因为它们是不同的对象,即使内容相同。
如果使用数组文字让您感到困惑,请注意上面的代码与以下代码完全相同:
new Array(0, 1) == new Array(0, 1);
关于javascript - 比较javascript中不同实例的相似对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9878637/