2013-06-25 9 views
5

このループの最後の繰り返しになっているかどうかを確認するにはどうすればよいですか?私はこの質問をして申し訳ありません。私は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 " 
     } 
    } 
} 
+0

'if(i!==(QuerySplit.length - 1)){' – Ian

+0

もセミコロンは必須ではありませんが、お勧めです! –

+0

これが何をすべきか分かりません - すべての繰り返し(ただし最後)で 'NewQuery'を上書きしていますか? – Bergi

答えて

5

は、あなたがvar NewQuery = "";を必要とすることに注意して長さをチェックしてください - 1。また、最後の文は、おそらく何をしたいの単なる推測である場合:

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

配列は0から始まります。つまり、配列に3つの項目がある場合、インデックスは0,1,2になります。最後の1つは長さより1小さい。

あなたはこのようにチェックする必要があります:(i < QuerySplit.length -1)

9

iは常により小さいです。これはループ状態です。

var NewQuery = QuerySplit.map(function(x){return x.value;}).join(" AND "); 
:あなたはあなたが何をしようとしてためjoin Array methodを使用することをお勧めしませんだろう、ところで

if (i < QuerySplit.length - 1) 

:最後の反復では、それはQuerySplit.length-1の値を持つことになります、それはあなたが反対確認することができるものです

+0

とにかく部分的なクレジットを追加していますか? – Neil

+0

@ Neeil:あなたが答えを受け入れない場合でも、あなたは[upvote it](http://stackoverflow.com/privileges/vote-up)または[賞金を賞与](http://stackoverflow.com/help/bounty)(これはあまりにも多くのクレジットです:-) – Bergi

関連する問題