如何比较包含循环对象的JavaScript对象
请告诉我比较包含循环对象的JavaScript对象 如下所示,返回true,因为a1等于a2如何比较包含循环对象的JavaScript对象,javascript,Javascript,请告诉我比较包含循环对象的JavaScript对象 如下所示,返回true,因为a1等于a2 a1 = {} a1.b = 1 a1.c = 2 a1.d = a a2 = {} a2.b = 1 a2.c = 2 a2.d = a2 如下所示,返回false,因为a1不等于a2 a1 = {} a1.b = 1 a1.c = 2 a1.d = a a2 = {} a2.b = 1 a2.c = 2 a2.d = a2 a2.e = a2 试试这个 编写了一个符合您需要的比较器函
a1 = {}
a1.b = 1
a1.c = 2
a1.d = a
a2 = {}
a2.b = 1
a2.c = 2
a2.d = a2
如下所示,返回false,因为a1不等于a2
a1 = {}
a1.b = 1
a1.c = 2
a1.d = a
a2 = {}
a2.b = 1
a2.c = 2
a2.d = a2
a2.e = a2
试试这个
编写了一个符合您需要的
比较器
函数。但是,它有一个限制,第一个参数应该比第二个参数具有更多的属性。我可以在函数中切换它们,但我不认为为此创建临时对象是好的。
此外,在以下情况下,它将返回false
:
a1.d = a2
a2.d = a1
告诉我你是否也需要处理那个案子。
编辑:我刚想到,在比较循环对象时,您总是会遇到堆栈大小异常,因此您可以尝试捕获此异常,但它可能会有不好的性能。
你如何比较这两个物体?@Sushil这是他的问题我弄错了question@Sushil是的,比较这两个Objects.JSON无法表示递归数据。你没有JSON。这些是JavaScript对象。RangeError:超出了最大调用堆栈大小
。我猜,OP有一个输入错误:a1.d=a1
@ArtyomNeustroev Fixed checkfiddler@Suhil现在它返回false
,但在这种情况下,它意味着返回true
。false
可以通过简单的=
比较来实现。OP想要得到true
@ArtyomNeustroev如果两个对象具有相同的属性,我的解决方案将返回true谢谢,对不起。我正在开发测试工具。它的概念是“没有编码测试,JavaScript的测试自动化”。这就是为什么我需要比较它们,但我保留了一次。
a1.d = a2
a2.d = a1