Javascript 给定密钥的序列搜索

Javascript 给定密钥的序列搜索,javascript,Javascript,确定键的字符是否按顺序出现,但不一定在序列中连续出现。我的代码对它们都返回true,我不知道该怎么办 函数序列搜索序列,键{ 对于变量i=0;i

确定键的字符是否按顺序出现,但不一定在序列中连续出现。我的代码对它们都返回true,我不知道该怎么办

函数序列搜索序列,键{ 对于变量i=0;iconsole.logsequenceSearch'caat'、'cat'//是的我建议使用正则表达式,它可能不是最快的方法,但它很简单:

函数序列搜索序列,键{ 返回新的RegExp[…键]。加入“*”。testsequence; } 控制台.logsequenceSearch'arcata'、'cat'//符合事实的 console.logsequenceSearch'c1a2t3','cat'//符合事实的 console.logsequenceSearch'cta',cat'//错误的
console.logsequenceSearch'caat'、'cat'//真简单解。此版本将按顺序跟踪键的出现顺序

function sequenceSearch(sequence, key) {
    let i = 0;
    for(let j = 0; j < sequence.length && i < key.length; j++)
       if (sequence[j] === key[i]) i++;
    return (i === key.length);
}


一些冗长的方法。运行两个循环,同时跟踪示例单词的位置,并只测试带有下一个键字母的剩余示例

函数序列搜索序列,键{ var s=0; keyloop: 对于变量k=0;k控制台.logsequenceSearch'acaat'、'cat'//true您可能需要也可能不需要两个循环,就像我在包含的代码片段中所做的那样,但如果您不需要,最好不要处理所有事情。例如,给定sequenceSearch'catarcatatac'、'cat',我希望它在开始时找到cat,然后停止查找之后找到的任何字符。您也不需要处理所有的密钥。如果你甚至找不到c的匹配项,而我们在序列的末尾,我们可以停下来

由于提前返回,并且对循环的运行方式非常挑剔,您可以避免走得太多。例如有关更多详细信息,请参见后面的代码段注释版本

函数序列搜索序列,键{ 常数l=序列长度; 设i=0; 对于密钥的const keyChar{ 对于;iconsole.logsequenceSearch'caat'、'cat'//事实上我不允许使用正则表达式