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

前端之家收集整理的这篇文章主要介绍了如何使用Javascript或lodash对两个对象的属性进行浅层比较?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有没有办法我可以做一个浅层比较,不会下去比较 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;
}
原文链接:https://www.f2er.com/js/156073.html

猜你在找的JavaScript相关文章