比较javascript中的对象

时间:2014-06-06 18:17:51

标签: arrays object comparison-operators

这是关于javascript对象本体的一般问题以及===运算符的工作方式。

从一个例子开始:

var z = [1]; 
z === [1] // returns false.

完全引起了我的注意。为什么?

我想它必须是===将数组作为对象(即通过其对象id或其他)进行比较,而不是通过比较对象的内容 - 这将返回true。

那么比较像这样的对象内容的好方法是什么?

您可以通过转换z.toString()并比较结果来强制解决问题,但这似乎很粗糙。

1 个答案:

答案 0 :(得分:0)

您无法将javascript中的两个非基元值与==或===进行比较。结果是错误的,即使它们的结构和值是等于的,因为比较不是在值上而是在对象的地址上。

Example

z = [5];
a = z;
b = z;
a === b; // true, because a and b linked to z.

要回答"如何比较"的问题,你可以有效地串联,或在两个数组上循环......