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