Node.js nodejs在对象中获取值,其中键是要与句子匹配的单词列表

Node.js nodejs在对象中获取值,其中键是要与句子匹配的单词列表,node.js,string,Node.js,String,我有一个对象,其中键是单词列表,值是如下所示的函数: { 'test,qwe,asdwe': [Function: test1], 'lol,xd': [Function: test2] } 我有一个句子,我想将它与一个关键字匹配,其中句子中的任何单词都与关键字中的任何单词匹配(一个关键字不能有相同单词的2倍) 对象上部的示例: 一句话“嗨,你好lol”与第二个函数test2 我能把钥匙和钥匙配对 Object.keys(myObject).some(key => key ===

我有一个对象,其中键是单词列表,值是如下所示的函数:

{
  'test,qwe,asdwe': [Function: test1],
  'lol,xd': [Function: test2]
}
我有一个句子,我想将它与一个关键字匹配,其中句子中的任何单词都与关键字中的任何单词匹配(一个关键字不能有相同单词的2倍)

对象上部的示例:

一句话
“嗨,你好lol”
与第二个函数
test2

我能把钥匙和钥匙配对

Object.keys(myObject).some(key => key === 'lol')
但是如果这个句子有“lol-hhh”它就不起作用了,它必须和这个句子中的“lol”匹配,我想我可以用strstr来做吗?但我不知道什么是最好的方法

如果有人能帮助我,请=)


谢谢

我首先将对象转换为另一个对象,其键都是单个单词(例如,将
'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(hi,你好吗lol.match(regex))的常量词{
分离词[word]();

}
如果找到匹配项,您想如何处理该匹配项?能否举例说明会发生什么情况?如果匹配项,我想让函数执行该匹配项。是否有办法将其缩短?或者不使用正则表达式?regex就这么一点也不重?感谢您的回答,根据不同的可能模式进行字符串匹配正是正则表达式擅长的事情,通常远远超过其他编程解决方案。我想如果你真的想,你可以迭代字符串的每个索引,切片,然后迭代每个可能的键,然后检查切片的字符串
是否与键一起启动,但是这太长了,太难看了。在这里,正则表达式确实是一种更好的方法。