扫码关注官方订阅号
有两个独立的对象集合,如何判断这两个集合里面的对象个数、属性、值是否相等?越简单越好的。
业精于勤,荒于嬉;行成于思,毁于随。
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这样的动态类型语言,相等这个词的涵义实际上非常丰富。 你问如何判断对象相等,那么首先需要做的就是定义一下你这个相等需要达到什么程度。
相等
引用地址相等
原型链是否需要一致?
构造函数是否需要一致?
如果要检查内容,自身属性之下的对象是判断其引用相等还是递归调用当前相等函数进行判断?
循环引用怎么办?
…………等等 它们各自的处理方式都有些微妙的区别。
使用underscore的isEqual就好啦:
a = [ { name: 'wang' }, { name: 'liu' } ] b = [ { name: 'wang' }, { name: 'liu' } ] _.isEqual(a, b) // true
es6:
Object.is(obj1, obj2);
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
js这样的动态类型语言,
相等这个词的涵义实际上非常丰富。你问如何判断对象
相等,那么首先需要做的就是定义一下你这个相等需要达到什么程度。引用地址相等
原型链是否需要一致?
构造函数是否需要一致?
如果要检查内容,自身属性之下的对象是判断其引用相等还是递归调用当前
相等函数进行判断?循环引用怎么办?
…………等等
它们各自的处理方式都有些微妙的区别。
使用underscore的isEqual就好啦:
es6: