有两个独立的对象集合,如何判断这两个集合里面的对象个数、属性、值是否相等?越简单越好的。
这个答案保证能让你满足
function compare(obj1,obj2){
if(Object.keys(obj1).length != Object.keys(obj2).length){
return false
}else{
for(key in obj1){
if(obj2.hasOwnProperty(key)){
if( !Object.is(obj1[key],obj2[key])){
return false;
}
}else{
return false
}
}
return true
}
}
js这样的动态类型语言,相等
这个词的涵义实际上非常丰富。
你问如何判断对象相等
,那么首先需要做的就是定义一下你这个相等
需要达到什么程度。
引用地址相等
原型链是否需要一致?
构造函数是否需要一致?
如果要检查内容,自身属性之下的对象是判断其引用相等还是递归调用当前相等
函数进行判断?
循环引用怎么办?
…………等等
它们各自的处理方式都有些微妙的区别。
使用underscore的isEqual就好啦:
a = [ { name: 'wang' }, { name: 'liu' } ]
b = [ { name: 'wang' }, { name: 'liu' } ]
_.isEqual(a, b) // true
var a = new Set([1,2,3]);
var b = new Set([1,3,2]);
console.log(eqSet(a, b)); // true
function eqSet(as, bs) {
if (as.size !== bs.size) return false;
for (var a of as) if (!bs.has(a)) return false;
return true;
}
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决