如何使用Javascript或lodash对两个对象的属性进行浅层比较?

前端之家收集整理的这篇文章主要介绍了如何使用Javascript或lodash对两个对象的属性进行浅层比较?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法我可以做一个浅层比较,不会下去比较 Javascript或lodash中对象内部的对象内容?请注意,我确实检查了lodash,但似乎进行了深入的比较,我不想这样做.
  1. var a = { x: 1,y: 2}
  2. var b = { x: 1,y: 3}

有没有办法比较a和b?

解决方法

  1. function areEqualShallow(a,b) {
  2. for(var key in a) {
  3. if(!(key in b) || a[key] !== b[key]) {
  4. return false;
  5. }
  6. }
  7. for(var key in b) {
  8. if(!(key in a) || a[key] !== b[key]) {
  9. return false;
  10. }
  11. }
  12. return true;
  13. }

笔记:

>由于这很浅,areEqualShallow({a:{}},{a:{}})是错误的.
> areEqualShallow({a:undefined},{})为false.
>这包括原型中的任何属性.
>这使用===比较.我认为这就是你想要的. NaN === NaN是一种可能产生意外结果的情况.如果===不是您想要的,请用您想要的比较代替.

编辑:如果每个对象中有相同的键,那么

  1. function areEqualShallow(a,b) {
  2. for(var key in a) {
  3. if(a[key] !== b[key]) {
  4. return false;
  5. }
  6. }
  7. return true;
  8. }

猜你在找的JavaScript相关文章