我使用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