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。最後の 1 つは、長さより 1 つ小さいです。

次のように確認する必要があります。(i < QuerySplit.length -1)

于 2013-06-25T18:36:08.507 に答える