javascript - 比较javascript中不同实例的相似对象

标签 javascript

我一直想知道为什么会这样:

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/

相关文章:

javascript - 初始化后如何更改 map 控件的位置?

javascript - 对闭包中的这种 javascript 行为感到困惑

javascript - Angular 6 :How can we update multiple input field values by checking check boxes?

c# - 拿走一切,除非它看到 foo

javascript - 无法覆盖对象/类上的 toString

javascript - 如何为 JavaScript 字典创建和添加值

javascript - Jade to HTML > 以jade文件命名的目录中的index.html

javascript - 这个简单的 JavaScript 在做什么

加载 ajax 内容时未加载 JavaScript

javascript - 如何根据 json 数据列表更新 html 项目列表