如何使用lodash或javascript匹配两个对象?

如何使用lodash或javascript匹配两个对象?,javascript,lodash,Javascript,Lodash,我试图使用lodash的isMatch函数来匹配下面两个对象,但它总是给我真实的结果,因为我看到perm对象的长度不同,并且不匹配,下面的参数数组缺少第2天是我尝试的方式 var对象={ 参数:['day1','day2','day3'], 参数2:['day2'、'day3'、'day1'、'day0'], 参数3:['day1'] }; var object2={ 参数:['day3','day1'], 参数3:['day1'], 参数2:['day3'、'day2'、'day0'、'da

我试图使用lodash的isMatch函数来匹配下面两个对象,但它总是给我真实的结果,因为我看到perm对象的长度不同,并且不匹配,下面的参数数组缺少第2天是我尝试的方式

var对象={
参数:['day1','day2','day3'],
参数2:['day2'、'day3'、'day1'、'day0'],
参数3:['day1']
};
var object2={
参数:['day3','day1'],
参数3:['day1'],
参数2:['day3'、'day2'、'day0'、'day1']
};
var matched=uu.isMatch(object,object2);
console.log(匹配)

\uiMatch基本上会告诉您第二个对象是否“包含”在第一个对象中

var object = { 'a': 1, 'b': 2 };

_.isMatch(object, { 'b': 2 });
// => true

_.isMatch(object, { 'b': 1 });
// => false
()

似乎您需要\u同等的


()

。.isMatch基本上会告诉您第二个对象是否“包含”在第一个对象中

var object = { 'a': 1, 'b': 2 };

_.isMatch(object, { 'b': 2 });
// => true

_.isMatch(object, { 'b': 1 });
// => false
()

似乎您需要\u同等的


()

您可以使用这个简单的JavaScript函数:

功能匹配(a、b){
返回Object.keys(a).every(key=>{
常量集=新集(a[键]);
返回b和b[key]中的键。长度===a[key]。长度
&&b[key].every(val=>set.has(val));
});
}
var对象={param:['day1','day2','day3'],param2:['day2','day3','day1','day0'],param3:['day1']};
var object2={param:['day3','day1'],param3:['day1'],param2:['day3','day2','day0','day1']};

log(匹配(object,object2))您可以使用此普通JavaScript函数:

功能匹配(a、b){
返回Object.keys(a).every(key=>{
常量集=新集(a[键]);
返回b和b[key]中的键。长度===a[key]。长度
&&b[key].every(val=>set.has(val));
});
}
var对象={param:['day1','day2','day3'],param2:['day2','day3','day1','day0'],param3:['day1']};
var object2={param:['day3','day1'],param3:['day1'],param2:['day3','day2','day0','day1']};
log(匹配(object,object2))\u.isEqual(值,其他)

它对两个值进行深入比较,以确定它们是否相等。 它支持比较数组、数组缓冲区、布尔值、日期对象、错误对象、映射、数字、对象对象、正则表达式、集合、字符串、符号和类型化数组。对象对象按其自身的、而不是继承的、可枚举的属性进行比较。函数和DOM节点通过严格相等进行比较,即===

var object = { 
  param: ['day1', 'day2', 'day3'],
  param2: ['day2', 'day3', 'day1', 'day0'],
  param3: ['day1'] 
};

var other = { 
  param: ['day1', 'day2', 'day3'],
  param2: ['day2', 'day3', 'day1', 'day0'],
  param3: ['day1'] 
};
 
_.isEqual(object, other);
// returns true
它会变成现实

var object = { 
  param: ['day1', 'day2', 'day3'],
  param2: ['day2', 'day3', 'day1', 'day0'],
  param3: ['day1'] 
};

var other = { 
  param: ['day3', 'day1'],
  param3: ['day1'],
  param2: ['day3', 'day2', 'day0', 'day1'] 
};

_.isEqual(object, other);
// returns false
它将返回false

\uIsequal(值,其他)

它对两个值进行深入比较,以确定它们是否相等。 它支持比较数组、数组缓冲区、布尔值、日期对象、错误对象、映射、数字、对象对象、正则表达式、集合、字符串、符号和类型化数组。对象对象按其自身的、而不是继承的、可枚举的属性进行比较。函数和DOM节点通过严格相等进行比较,即===

var object = { 
  param: ['day1', 'day2', 'day3'],
  param2: ['day2', 'day3', 'day1', 'day0'],
  param3: ['day1'] 
};

var other = { 
  param: ['day1', 'day2', 'day3'],
  param2: ['day2', 'day3', 'day1', 'day0'],
  param3: ['day1'] 
};
 
_.isEqual(object, other);
// returns true
它会变成现实

var object = { 
  param: ['day1', 'day2', 'day3'],
  param2: ['day2', 'day3', 'day1', 'day0'],
  param3: ['day1'] 
};

var other = { 
  param: ['day3', 'day1'],
  param3: ['day1'],
  param2: ['day3', 'day2', 'day0', 'day1'] 
};

_.isEqual(object, other);
// returns false

它将返回false
。isEqual
可能更适合此处
。isEqual
可能更适合此处