我使用JavaScript对象的深比较lodash isEqual
功能。它要求对象具有相同的原型算作相等,如下面的会话与节点REPL显示:检查JS深平等而不考虑的原型(优选在lodash)
> const isEqual = require('lodash').isEqual
undefined
> isEqual({a:3},{a:3})
true
> class Foo { constructor(x) {this.a = x} }
[Function: Foo]
> isEqual(new Foo(3), new Foo(3))
true
> isEqual({a:3}, new Foo(3))
false
有没有一种简单的方法做深做比较忽视的原型?它应该对日期进行特殊比较;我只想在lodash会做递归比较的情况下,不关心原型是否有区别。很明显,我可以自己编写代码,但我使用lodash而不必做那种事情。我也想过这样做
isEqual(JSON.parse(JSON.stringify(obj1)), JSON.parse(JSON.stringify(obj2)))
也许它是好的,但它似乎很重要。
你可以只用'JSON.stringify({A:3})=== JSON.stringify(新富(3 ))'在最后一个例子中; – user3335966
这不起作用。大多数浏览器对于'JSON.stringify({a:1,b:2})'和'JSON.stringify({b:2,a:1})'会给出不同的结果。 – gmr