我需要比较两个对象,并根据以下逻辑返回true或false。
const expectedValue = {
city: "San Jose",
state: "california",
zip: "95234"
}
const actualValue = {
address: "5543322 Adam St",
city: "San Jose",
state: "california",
zip: "95234",
country: "USA"
}
比较上述对象时,它应该返回“ TRUE ”,因为expectedValue的键值对存在于ActualValue中。 我在lodash文档中找不到任何内容,对此有什么好的解决方案吗?
先谢谢您!
答案 0 :(得分:2)
您可以在every()
产生的数组上使用Object.entries()
来测试期望中的每个键/值对是否与实际匹配:
const expectedValue = {
city: "San Jose",
state: "california",
zip: "95234"
}
const actualObject = {
address: "5543322 Adam St",
city: "San Jose",
state: "california",
zip: "95234",
country: "USA"
}
let test = Object.entries(expectedValue)
.every(([key, value]) => actualObject[key] === value )
console.log(test)
如果expectedValue
中的每个键/对都存在actualObject
中并且与值匹配,则返回true,否则返回false。
在极端情况下,expectedValue
中存在一个值为undefined
的属性。您可以通过测试actualObject.hasOwnProperty(key) && actualObject[key] === value
来解决此问题。
答案 1 :(得分:0)
Lodash具有_.isMatch()
功能:
在对象和源之间进行部分深度比较,以 确定对象是否包含等效的属性值。
import akka.actor.ActorRef;
import akka.actor.ActorSystem;
final ActorSystem system = ActorSystem.create("DeadLetters");
final ActorRef actor = system.actorOf(Props.create(DeadLetterActor.class));
system.getEventStream().subscribe(actor, DeadLetter.class);
subscribe()