js对象怎么比较?

2013-07-15 15:08:44 +08:00
 sivacohan
a = {'a':1}
b = {'a':1}

a === b 这个是false

对于复杂对象的比较是比较他们在内存里是不是同一地址吗?
这个地方应该看点什么。或者查点什么?

@Mutoo
4037 次点击
所在节点    JavaScript
8 条回复
cmonday
2013-07-15 16:30:37 +08:00
是的。只有两个内存地址一致的对象才会在`===`判断中得到true

如果需要判断内部的属性是否一致,只能做递归比较了,比如 underscore 的 isEqual 方法 http://underscorejs.org/#isEqual https://github.com/jashkenas/underscore/blob/master/underscore.js#L844-L938
sivacohan
2013-07-15 16:45:10 +08:00
@cmonday 谢谢,有一个需求是比较两个object的变化。看起来只能自己动手实现一个了。
coolicer
2013-07-15 17:16:39 +08:00
对象的比较是引用的比较。
bakac
2013-07-15 17:35:08 +08:00
比较字面量 就是toString 之后的
darasion
2013-07-15 19:35:06 +08:00
多数语言都会得到这个结果吧。不光js
Golevka
2013-07-15 19:54:36 +08:00
@bakac bakac --- An optimizing compiler for baka, written in baka
miniwade514
2013-07-18 15:34:09 +08:00
a,b 只是两个引用,比较它们不能达到你的目的。
Ricepig
2013-07-18 16:05:48 +08:00
转json以后再比字符串,哈哈哈哈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/75830

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX