14

如何检查我是否处于此循环的最后一次迭代中?我很抱歉问这个问题。我习惯于在 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 "
       }
    }
}
4

3 回答 3

17

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

if (i < QuerySplit.length - 1)

顺便说一句,你最好使用joinArray 方法来做你想做的事情:

var NewQuery = QuerySplit.map(function(x){return x.value;}).join(" AND ");
于 2013-06-25T18:36:53.947 回答
13

请注意,您需要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,这是您的最后一次迭代。

于 2013-06-25T18:36:44.303 回答
3

数组是从 0 开始的。这意味着如果数组中有 3 个项目,您的索引将为0,1,2. 最后一个比长度小一。

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

于 2013-06-25T18:36:08.507 回答