Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/416.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否可以仅在两个对象共享的键/属性之间比较两个对象?_Javascript_Json_Chai - Fatal编程技术网

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

Javascript 是否可以仅在两个对象共享的键/属性之间比较两个对象?,javascript,json,chai,Javascript,Json,Chai,我有两个目标 address: { id: 1234, city: "foo", country: "bar", name: "baz" } 及 如果我尝试在它们之间进行直接比较/断言,即 expect(address).to.contain(defaultAddress) (或者反过来说),它将失败,因为每个字段都包含另一个不包含的字段 (AssertionError:expect{address}应该有一个属性“firstName”) 我只想比较它们共享的键中的值。是否可

我有两个目标

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

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

expect(address).to.contain(defaultAddress)
(或者反过来说),它将失败,因为每个字段都包含另一个不包含的字段

(AssertionError:expect{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));

虽然没有测试

哦,我应该阅读chai文档,我不知道你能做到:/
expect(defaultAddress).to.include.any.keys(...Object.keys(address));