所以我有一个对象,其中键是单词列表,值是如下所示的函数:
{
'test,qwe,asdwe': [Function: test1],
'lol,xd': [Function: test2]
}
我有一个句子,我想将它与一个关键字匹配,其中句子中的任何单词匹配关键字中的任何单词(一个关键字不能有 2 次相同的单词)
上层对象示例:
一个句子 "hi , how are you lol"
与第二个函数 test2
匹配
我可以匹配钥匙
Object.keys(myObject).some(key => key === 'lol')
但是如果句子有 'lol hhh' 就不起作用,它必须只与句子中的 'lol' 匹配,我想我可以用 strstr 来做吗?但我不知道什么是最好的方法。
如果有人可以帮助我,请=)
谢谢
答案 0 :(得分:1)
我首先将对象转换为另一个键都是单个单词的对象(例如,将 'lol,xd'
分隔为两个单独的键值对)。然后你可以通过在对象的所有键之间交替来构造一个正则表达式,然后将字符串与正则表达式匹配并调用适当的函数:
const initialObj = {
'test,qwe,asdwe': () => console.log('test1'),
'lol,xd': () => console.log('test2'),
};
const separatedObj = Object.fromEntries(
Object.entries(initialObj).flatMap(
([key, fn]) => key.split(',').map(word => [word, fn])
)
);
const regex = new RegExp(Object.keys(separatedObj).join('|'), 'g');
for (const word of "hi , how are you lol".match(regex)) {
separatedObj[word]();
}