有没有办法我可以做一个浅层比较,不会下去比较
Javascript或lodash中对象内部的对象内容?请注意,我确实检查了lodash,但似乎进行了深入的比较,我不想这样做.
var a = { x: 1,y: 2} var b = { x: 1,y: 3}
有没有办法比较a和b?
解决方法
function areEqualShallow(a,b) { for(var key in a) { if(!(key in b) || a[key] !== b[key]) { return false; } } for(var key in b) { if(!(key in a) || a[key] !== b[key]) { return false; } } return true; }
笔记:
>由于这很浅,areEqualShallow({a:{}},{a:{}})是错误的.
> areEqualShallow({a:undefined},{})为false.
>这包括原型中的任何属性.
>这使用===比较.我认为这就是你想要的. NaN === NaN是一种可能产生意外结果的情况.如果===不是您想要的,请用您想要的比较代替.
编辑:如果每个对象中有相同的键,那么
function areEqualShallow(a,b) { for(var key in a) { if(a[key] !== b[key]) { return false; } } return true; }