Javascript 如何使用js检查对象是否包含带有正则表达式的部分键?

Javascript 如何使用js检查对象是否包含带有正则表达式的部分键?,javascript,regex,key,chai,contain,Javascript,Regex,Key,Chai,Contain,我正在使用Chai.js,并试图检查对象是否包含部分键。让我解释一下: 我要测试这个对象: var obj = { "one/two/three": "value" } 我想使用Chai.js检查对象obj是否包含一个部分键“one”,它包含在键“one/two/three”中 在此,我检查是否包含一个密钥: ({ foo: 1, bar: 2 }).should.have.keys('bar'); ({ foo: 1, bar: 2, baz: 3 }).should.include

我正在使用Chai.js,并试图检查对象是否包含部分键。让我解释一下:

我要测试这个对象:

var obj = {
    "one/two/three": "value"
}
我想使用Chai.js检查对象
obj
是否包含一个部分键
“one”
,它包含在键
“one/two/three”

在此,我检查是否包含一个密钥:

({ foo: 1, bar: 2 }).should.have.keys('bar');
({ foo: 1, bar: 2, baz: 3 }).should.include.keys('foo');
({ foo: 1, bar: 2, baz: 3 }).should.contain.keys('baz');
这里我检查字符串是否包含子字符串:

'foobar'.should.match(/^foo/)
然后,我想将两者合并,得到如下内容:

({ foo: 1, bar: 2, baz: 3 }).should.contain.keys.which.match('fo');
你知道怎么处理吗


谢谢你的帮助

我能想到的最简单的方法是迭代对象的键并检查它们是否与正则表达式匹配

Object.keys({ foo: 1, bar: 2, baz: 3 }).some(function(key) {
    if (key.match(/^foo/) != null) {
        return true;
    }
    return false;
});
然后,您可以将其包装在一些代码中,以实现所需的结果,如下所示:

expect(Object.keys({ foo: 1, bar: 2, baz: 3 }).some(function(key) {
    if (key.match(/^foo/) != null) {
        return true;
    }
    return false;
})).to.equal(true);

如果您不熟悉,它将在到达任何键时立即返回true,从而导致其回调返回truthy值。

如果Chai对此有内置断言,我会非常惊讶,但它的文档确实讨论了如何添加您自己的断言。为上面的内容添加你自己的内容是相当简单的。我刚刚找到了一些关于创建我自己的文档,看起来很有趣,谢谢!你可能没有注意到,但我想用Chai的API实现这一点。