JSON parsed not equal to original
本问题已经有最佳答案,请猛点这里访问。
问题是,以下内容在逻辑上对我来说毫无意义,也许任何人都可以解释(解释json.parse/json.stringify究竟做了什么也会得到赞赏):
1 2 3 4 5 6 | var hello = {norsk:"hei"}, parsedHello = JSON.parse(JSON.stringify(hello)); hello === parsedHello // false hello == parsedHello // false typeof(hello) //"object" typeof(parsedHello) //"object" hello.norsk === parsedHello.norsk // true |
JS中的对象是通过引用进行比较的,因为您正在创建一个全新的对象——它们将不相等。
您可以通过将它们串起来进行比较:
1 | JSON.stringify(hello) === JSON.stringify(parsedHello) |
您有两个单独的对象,恰好包含相同的属性/数据。它们不相等,因为它们不是同一个物体。
以同样的方式:
1 2 3 4 | var a = {norsk:"hei"}; var b = {norsk:"hei"}; a == b; // false |
http://jsfiddle.net/amhbm/
这里他混淆的是,您正在比较两个对象是否相等,但即使它们所代表的数据相同,它们也是不同的实例。
比较属性
不幸的是,以您希望的方式比较复杂的对象是一个复杂的事情,叫做
有关比较JavaScript对象的详细信息,请参阅此处。
javascript中的两个对象不相等。我建议使用