循环检查是否在最后一次迭代?

时间:2013-06-25 18:34:56

标签: javascript

如何检查我是否在此循环的最后一次迭代中?我很抱歉提出这个问题。我习惯用VB.NET编程,javascript本质上看起来很神秘。

if (QuerySplit.length > 1) {
   var NewQuery
   for (i=0; i<QuerySplit.length; i++)
   {
       // if we're not on the last iteration then
       if (i != QuerySplit.length) {
           // build the new query
           NewQuery = QuerySplit[i].value + " AND "
       }
    }
}

3 个答案:

答案 0 :(得分:13)

i 总是小于<{em> ,而不是QuerySplit.length - 这就是你的循环条件。在最后一次迭代中,它的值为QuerySplit.length-1,这是您可以检查的内容:

if (i < QuerySplit.length - 1)

顺便说一下,你最好使用join Array method来做你想做的事情:

var NewQuery = QuerySplit.map(function(x){return x.value;}).join(" AND ");

答案 1 :(得分:8)

请注意,您需要var NewQuery = "";并检查长度 - 1.此外,最后一个if语句只是猜测您可能想要做的事情:

if (QuerySplit.length > 1) {
  var NewQuery = "";
  for (i = 0; i < QuerySplit.length; i++) {
    // if we're not on the last iteration then
    if (i != QuerySplit.length - 1) {
      // build the new query
      NewQuery += QuerySplit[i].value + " AND "
    } else {
      NewQuery += QuerySplit[i].value;
    }
  }
}

如果QuerySplit.length为4,则:

0,1,2,3

...是索引。所以你想检查索引何时是3,那是你的最后一次迭代。

答案 2 :(得分:3)

该数组基于0。这意味着如果数组中有3个项目,则索引将为0,1,2。最后一个比长度少一个。

你必须这样检查:(i < QuerySplit.length -1)