循环到字符串中的特定索引

时间:2016-07-30 17:59:24

标签: javascript

我目前正在做一个谜题,但我在制定如何做以下事情的想法时遇到了麻烦。下面是我的想法的一些代码(这还没有工作)

const words = ['this', 'is', 'my', 'dog', 'bit', 'bite', 'every']; 
const strings = ['thisis', 'thisisacat', 'thisisaduck', 'thisismy', 'thisismydog', 'bitevery']; 
var count;
for (var i = 0 ; i < strings.length ; i++)
{
    for (var j = 0; j <words.length; j++)
  {
    if(strings[i].indexOf(words[j]) !== -1)
    {
        count+=words[j].length;
    }
  }
}

基本上我想首先转到this这个词,检查它是否在strings[j]。如果是,则获得words[i]的长度,然后转到words[i]'th内的strings[j]位置,这意味着我想要&#39; is&#39; &{39; thisis&#39;的一部分。基本上我只想测试strings中的每个元素是否可以由words中的任意数量的组合来表示。这当然可以使用正则表达式完成,但我想使用当前的思维过程。

TLDR

以我目前的方式,如何检查words数组中每个元素中是否存在strings数组中的单词(我正在尝试使用indexOf),如果是,转到单词位置的长度意义转到i thisis所在的位置。我意识到我说它的方式可能有点冗长,但我不确定如何用它来表达它。任何帮助表示赞赏。

运行示例

我们在strings[i],现在我们检查words中的任何元素是否在strings[i]中。现在this位于'thisis'中,因此添加四个索引,因为它的长度为4,要到达thisis的第4个位置,现在我们有{{1}所以is的其余部分再次循环,现在words位于is内,这意味着我们已成功使用is中的一些单词创建了一个单词阵列。请注意,我实际上并不想从words删除this,因为我知道完全修改字符串在内存中非常昂贵。

另一次运行

thisis中取thisismydog。让我们重复一遍。 strings位于this内,所以现在转到thisismydog的第4个以上(因为thisismydog的长度为4),现在我们考虑this。现在再次迭代查看单词中的元素。我们看到ismydog在那里,所以我们转到is中的第二个元素,即ismydog。由于我们到达了单词的末尾,我们可以成功地得出结论:mydog确实可以通过单词中的这些元素的组合来表示。

1 个答案:

答案 0 :(得分:-1)

var count;更改为var count = 0;。你必须初始化数字,否则它将是NaN。使用控制台或alert证明它。