有没有办法我可以做一个浅层比较,不会下去比较
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;
- }