美文网首页JavaScript 进阶营
js之比较两个对象是否相同

js之比较两个对象是否相同

作者: 贤总_ | 来源:发表于2019-08-08 10:54 被阅读4次

如何比较2个对象是否相同

较为简单的方法,如下

//比较2个对象是否相同
function isObjEqual(o1,o2){
    var props1 = Object.getOwnPropertyNames(o1);
    var props2 = Object.getOwnPropertyNames(o2);
    if (props1.length != props2.length) {
        return false;
    }
    for (var i = 0,max = props1.length; i < max; i++) {
        var propName = props1[i];
        if (o1[propName] !== o2[propName]) {
            return false;
        }
    }
    return true;
}
var obj1 = {id:1,name:"张三"}
var obj2 = {id:2,name:"李四"}
var obj3 = {id:1,name:"张三",age:25}
var obj4 = {id:1,name:"张三"}
console.log(isObjEqual(obj1,obj2));//false
console.log(isObjEqual(obj1,obj3));//false
console.log(isObjEqual(obj1,obj4));//true

扩展写法:

Object.prototype.vequal = function(obj){
    var props1 = Object.getOwnPropertyNames(this);
    var props2 = Object.getOwnPropertyNames(obj);
    if (props1.length != props2.length) {
        return false;
    }
    for (var i = 0,max = props1.length; i < max; i++) {
        var propName = props1[i];
        if (this[propName] !== obj[propName]) {
            return false;
        }
    }
    return true;
}
var obj1 = {id:1,name:"张三"}
var obj2 = {id:2,name:"李四"}
var obj3 = {id:1,name:"张三",age:25}
var obj4 = {id:1,name:"张三"}
console.log(obj1.equal(obj2));//false
console.log(obj1.equal(obj3));//false
console.log(obj1.equal(obj4));//true

参考:https://blog.csdn.net/yqwang75457/article/details/62226145

相关文章

  • 14.同一运算符

    is/is not 比较两个变量引用对象是否相同,即id/内存地址是否相同 == 比较两个变量引用对象的值是否相同...

  • JavaScript比较两个数组的内容是否相同

    比较两个数组内容是否相同 比较两个Object对象元素是否相同

  • js之比较两个对象是否相同

    如何比较2个对象是否相同 较为简单的方法,如下 扩展写法: 参考:https://blog.csdn.net/yq...

  • Python 基础 | 深入理解is和==的区别

    is和==的区别 is是比较两个对象在内存中地址是否相同 ==是比较两个对象的值是否相同,它调用的是对象的eq方法...

  • UIImage对象比较是否相同

    UIImage对象好像是不能直接去比较是否相同的,很奇怪,明明是OC对象,但是OC却没有做类似地址哈希值快速记录这...

  • java比较两个对象内容是否相同

    在我们的实际开发中,通常会认为两个对象的内容相等时,则两个对象相等,equals返回true。对象内容不同,则返回...

  • Java中的== 和equals 以及 kotlin中的==和=

    Java == 比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同...

  • 2016.6.12

    ruby的equal是比较两个对象是否相同,而java里String类的equal方法比较两个字符串对象的值是否相...

  • equals

    equals 比较的是两个引用数据类型对象的地址是否相同

  • 02.Object的equals方法

    equals()方法 equals方法,用于比较两个对象是否相同,它其实就是使用两个对象的内存地址在比较。Obje...

网友评论

    本文标题:js之比较两个对象是否相同

    本文链接:https://www.haomeiwen.com/subject/gvbtjctx.html