为什么我的函数在JavaScript中只包含数组的第一个索引?

为什么我的函数在JavaScript中只包含数组的第一个索引?,javascript,Javascript,我的函数插件应该向数组start添加两个单词作为单独的索引。它将找到start的最后一个索引,然后在数组Arr中搜索该索引;然后它concats.concat在原始索引之后的两个索引,即start的最后一个索引开始。它首先从一个随机索引开始查找.indexOf,如果该随机索引返回undefined,那么它将从Arr的第0个索引的.indexOf开始,然后至少返回起始数组最后一个索引的原始位置之后的两个索引。函数addOn是第三个函数,但是理解addOn需要所有的代码 问题是它总是一次一次地添加前

我的函数插件应该向数组start添加两个单词作为单独的索引。它将找到start的最后一个索引,然后在数组Arr中搜索该索引;然后它concats.concat在原始索引之后的两个索引,即start的最后一个索引开始。它首先从一个随机索引开始查找.indexOf,如果该随机索引返回undefined,那么它将从Arr的第0个索引的.indexOf开始,然后至少返回起始数组最后一个索引的原始位置之后的两个索引。函数addOn是第三个函数,但是理解addOn需要所有的代码

问题是它总是一次一次地添加前两个索引

我的脚本是从一段文本中提取单词,但单词的顺序不会与每次文本中的顺序相同,三个单词的顺序相同,它将搜索最后一个单词的位置,可能会在文本中的不同位置找到它,这就是差异所在。到目前为止,它只把五个单词放在一起;前三个有序,后三个有序,但可能不是来自同一个地方。最后两个单词不需要与前面的单词不同,但这两个单词之前的单词必须是start的最后一个单词。“开始”的最后一个字在文本中可能会被多次使用。 我计划以后再重复这个插件函数。这实际上是为了在更大的文本上使用


我仍然不明白我的错误,它可能在连接中,.indexOf,或者其他地方?

我最终找到的答案是,在.indexOf之后,我需要添加>-1,所以看起来像。indexOf>-1

你能清楚地说明你想做什么吗?不是你的剧本doing@Michal,我的脚本是从一段文本中提取单词,但单词的顺序不会与每次文本中的顺序相同,三个单词的顺序相同,它将搜索最后一个单词的位置,可能会在文本中的不同位置找到它,这就是差异所在。到目前为止,它只把五个单词放在一起;前三个按顺序排列,后三个按顺序排列,但可能不在同一位置。因此,按顺序选择三个单词,并在末尾添加两个随机单词。结尾单词必须与其他三个不同?@Michal,结尾单词不必不同,但这两个单词之前的单词必须是开始的最后一个单词。开头的最后一个字在文本中可能会被多次使用。按照惯例,以大写字母开头的变量表示构造函数或常量(如果所有的大写字母都是大写的)。变量都应该以小写字母开头。
var ArrSpace = function (text){
  ArrText = text.split(" ");
  for(var i = 0; i < ArrText.length; i++)
    ArrText[i] = ArrText[i].concat(" ");
  return ArrText;
}
var randomStart = function(text){
  var ArraySpace = ArrSpace(text);
  var random = Math.floor(Math.random()* (ArraySpace.length -2));
  var Start = ArraySpace[random].concat(ArraySpace[random + 1].concat(ArraySpace[random+2]));
  return Start;
}
var addOn = function (text){
  var start = randomStart(text), last = start[start.length - 1], Arr = ArrSpace(text);
  var random = Math.floor(Math.random()* (Arr.length -2)), look = Arr.indexOf(last, random);
  start = start.concat(Arr[look + 1].concat(Arr[look + 2]));
  if (start[start.length - 2] == undefined || start[start.length - 1] == undefined){
    start.pop();
    start.pop();
    look = Arr.indexOf(last);
    start = start.concat(Arr[look + 1].concat(Arr[look + 2]));
  }
  return start;
}

//  (text from: Poe's "The Raven")
var text = "Once upon a midnight dreary, while I pondered, weak and weary, Over many a quaint and curious volume of forgotten lore, While I nodded, nearly napping, suddenly there came a tapping, As of some one gently rapping, rapping at my chamber door. T is some visiter, I muttered, tapping at my chamber door— Only this, and nothing more. Ah, distinctly I remember it was in the bleak December, And each separate dying ember wrought its ghost upon the floor. Eagerly I wished the morrow:—vainly I had sought to borrow From my books surcease of sorrow—sorrow for the lost Lenore— For the rare and radiant maiden whom the angels name Lenore— Nameless here for evermore. And the silken sad uncertain rustling of each purple curtain Thrilled me—filled me with fantastic terrors never felt before; So that now, to still the beating of my heart, I stood repeating T is some visiter entreating entrance at my chamber door Some late visiter entreating entrance at my chamber door;— This it is, and nothing more.";
console.log(addOn(text));
examples of the console.log:
late visiter entreating Once upon 
nodded, nearly napping, Once upon 
was in the Once upon 
each purple curtain Once upon 
rapping, rapping at Once upon