js对象怎么比较?

2013 年 7 月 15 日
 sivacohan
a = {'a':1}
b = {'a':1}

a === b 这个是false

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

@Mutoo
4612 次点击
所在节点    JavaScript
8 条回复
cmonday
2013 年 7 月 15 日
是的。只有两个内存地址一致的对象才会在`===`判断中得到true

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

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

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

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

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

© 2021 V2EX