js判断两个对象是否相同

支持多层对象

    function equals(x, y) {
        var f1 = x instanceof Object;
        var f2 = y instanceof Object;
        if (!f1 || !f2) {
            return x === y
        }
        if (Object.keys(x).length !== Object.keys(y).length) {
            return false
        }
        var newX = Object.keys(x);
        for (var p in newX) {
            p = newX[p];
            var a = x[p] instanceof Object;
            var b = y[p] instanceof Object;
            if (a && b) {
               let equal = equals(x[p], y[p])
               if (!equal) {
                  return equal
               }            
            } else if (x[p] != y[p]) {
                return false;
            }
        }
        return true;
    }
    console.log(equals({ a: 1, b: 2 }, { a: 1, d: 2 }))

了解详情可查看 参考链接
链接:https://www.jianshu.com/p/c8fe19f0ea37

参考链接中代码,虽然有了递归多层判断,但没有接收内层递归的值,所以对多层对象的问题不支持,上面代码已经处理!

你可能感兴趣的:(js判断两个对象是否相同)