Javascript 为什么u.isEqualWith()不能按预期工作?

Javascript 为什么u.isEqualWith()不能按预期工作?,javascript,angularjs,Javascript,Angularjs,我需要比较两个省略$$hashKey属性的类似对象。 为什么它不起作用 var obj1 = { class: '', kind: 'nats', url: 'http://some.valid', $$hashKey: 'object:37' }; var obj2 = { class: '', kin

我需要比较两个省略$$hashKey属性的类似对象。 为什么它不起作用

        var obj1 = {
            class: '',
            kind: 'nats',
            url: 'http://some.valid',
            $$hashKey: 'object:37'
        };

        var obj2 = {
            class: '',
            kind: 'nats',
            url: 'http://some.valid'
        };

        lodash.isEqualWith(obj1, obj2, function (objectValue, otherValue, key) {
            if (key === '$$hashKey') {
                return true;
            }
        });
注意:我不能使用angular.equals。仅限Lodash或香草。

使用

变量obj1={ 类别:, 种类:“nats”, 网址:'http://some.valid', $$hashKey:“对象:37” }; 变量obj2={ 类别:, 种类:“nats”, 网址:'http://some.valid' }; var ommitted=['$$hashKey'] var结果=u.isEqual _.omitobj1,ommitted, _.ommitted,ommitted ; console.logresult; 使用

变量obj1={ 类别:, 种类:“nats”, 网址:'http://some.valid', $$hashKey:“对象:37” }; 变量obj2={ 类别:, 种类:“nats”, 网址:'http://some.valid' }; var ommitted=['$$hashKey'] var结果=u.isEqual _.omitobj1,ommitted, _.ommitted,ommitted ; console.logresult;
@User863通过loadash为您提供了答案,下面是一个简单的js解决方案:

函数checkObjEqualityobj1、obj2、KeysIgnore=[]{ 常量keysObj1=Object.keysObj1.filterx=>!keystignore.length|| !keystore.includexx; 常量keysObj2=Object.keysObj2.filterx=>!keystignore.length|| !keystore.includexx; //没有相同数量的keyx,对象不能相等 如果keysObj1.length!==keysObj2.length{ 返回false; } //Obj1的一个键在Obj2中不存在 如果keysObj1.somex=>!keysObj2.includesx{ 返回false; } //检查每个键是否具有相同的值 返回键obj1.everyx=>obj1[x]==obj2[x]; } console.logcheckObjEquality{ 类别:, 种类:“nats”, 网址:'http://some.valid', $$hashKey:“对象:37” }, { 类别:, 种类:“nats”, 网址:'http://some.valid', },['$$hashKey']; console.logcheckObjEquality{ 类别:, 种类:'不', 网址:'http://some.valid', $$hashKey:“对象:37” }, { 类别:, 种类:“nats”, 网址:'http://some.valid', },['$$hashKey']; console.logcheckObjEquality{ 类别:, 种类:“nats”, 网址:'http://some.valid', $$hashKey:“对象:37” }, { 类别:, 种类:“nats”,
},['$$hashKey'] @User863通过loadash找到了答案,下面是一个简单的js解决方案:

函数checkObjEqualityobj1、obj2、KeysIgnore=[]{ 常量keysObj1=Object.keysObj1.filterx=>!keystignore.length|| !keystore.includexx; 常量keysObj2=Object.keysObj2.filterx=>!keystignore.length|| !keystore.includexx; //没有相同数量的keyx,对象不能相等 如果keysObj1.length!==keysObj2.length{ 返回false; } //Obj1的一个键在Obj2中不存在 如果keysObj1.somex=>!keysObj2.includesx{ 返回false; } //检查每个键是否具有相同的值 返回键obj1.everyx=>obj1[x]==obj2[x]; } console.logcheckObjEquality{ 类别:, 种类:“nats”, 网址:'http://some.valid', $$hashKey:“对象:37” }, { 类别:, 种类:“nats”, 网址:'http://some.valid', },['$$hashKey']; console.logcheckObjEquality{ 类别:, 种类:'不', 网址:'http://some.valid', $$hashKey:“对象:37” }, { 类别:, 种类:“nats”, 网址:'http://some.valid', },['$$hashKey']; console.logcheckObjEquality{ 类别:, 种类:“nats”, 网址:'http://some.valid', $$hashKey:“对象:37” }, { 类别:, 种类:“nats”, },['$$hashKey'];