javascript - 判断两个对象集合是否相等?
迷茫
迷茫 2017-04-11 11:29:30
[JavaScript讨论组]

有两个独立的对象集合,如何判断这两个集合里面的对象个数、属性、值是否相等?越简单越好的。

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

全部回复(4)
ringa_lee
obj=[{id:1,name:'a'},{id:2,name:'b'}]
obj2=[{id:1,name:'a'},{id:2,name:'b'}]
obj3=[{id:1,name:'a'},{id:3,name:'c'}]
obj==obj2;//false
JSON.stringify(obj)==JSON.stringify(obj2);//true
JSON.stringify(obj)==JSON.stringify(obj3);//false
伊谢尔伦

js这样的动态类型语言,相等这个词的涵义实际上非常丰富。
你问如何判断对象相等,那么首先需要做的就是定义一下你这个相等需要达到什么程度。

  1. 引用地址相等

  2. 原型链是否需要一致?

  3. 构造函数是否需要一致?

  4. 如果要检查内容,自身属性之下的对象是判断其引用相等还是递归调用当前相等函数进行判断?

  5. 循环引用怎么办?

…………等等
它们各自的处理方式都有些微妙的区别。

怪我咯

使用underscore的isEqual就好啦:

a = [ { name: 'wang' }, { name: 'liu' } ]
b = [ { name: 'wang' }, { name: 'liu' } ]
_.isEqual(a, b) // true
阿神

es6:

Object.is(obj1, obj2);
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号