繁体   English   中英

是否可以仅在它们共享的键/属性之间比较两个对象?

[英]Is it possible to compare two objects only between the keys / properties they both share?

所以我有两个对象

address: {
  id: 1234,
  city: "foo",
  country: "bar",
  name: "baz"
}

defaultAddress: { 
  id: 1234,
  city: "foo",
  country: "bar",
  firstName: "ba",
  lastName: "z"
}

如果我尝试在它们之间进行直接的比较/断言,即

expect(address).to.contain(defaultAddress)

(或者相反),它会失败,因为每个包含另一个不包含的字段

(AssertionError:期望{address}具有属性'firstName')

我只想比较它们共享的键中的值。 是否有可能以编程方式执行此类操作?

您正在尝试匹配共享密钥子集上的对象。 这可以如下完成。

for(const key in address) {
  if(typeof defaultAddress[key] !== 'undefined') {
    expect(address[key]).to.equal(defaultAddress[key])
  }
}

还看看这个答案

为什么不使用.to.include.any.keys作为

expect(defaultAddress).to.include.any.keys(...Object.keys(address));

虽然没有测试

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM