2013-06-25 35 views
5

Làm cách nào để kiểm tra xem tôi có đang lặp lại vòng lặp cuối cùng của vòng lặp này không? Tôi xin lỗi vì đã đặt câu hỏi này. Tôi đang sử dụng để lập trình trong VB.NET và javascript có vẻ rất khó hiểu bởi bản chất.Kiểm tra vòng lặp nếu trên lần lặp cuối cùng?

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

Hãy thử 'if (i! == (QuerySplit.length - 1)) {' – Ian

+0

Ngoài ra, dấu chấm phẩy cũng không bắt buộc nhưng được khuyến nghị cao! –

+0

Bạn không chắc chắn về điều này được thực hiện - bạn đang ghi đè 'NewQuery' trên mỗi lần lặp (nhưng lần cuối)? – Bergi

Trả lời

5

Hãy lưu ý rằng bạn cần var NewQuery = ""; và kiểm tra chiều dài - 1. Ngoài ra, cuối cùng câu lệnh if chỉ là một phỏng đoán về những gì bạn có thể muốn làm:

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; 
    } 
    } 
} 

Nếu QuerySplit.length là 4, sau đó:

0, 1, 2, 3

... là các chỉ số. Vì vậy, bạn muốn kiểm tra khi nào chỉ mục là 3 và đó là lần lặp cuối cùng của bạn.

2

Mảng là 0 dựa trên. Điều này có nghĩa là nếu có 3 mục trong mảng, chỉ mục của bạn sẽ là 0,1,2. Người cuối cùng là một ít hơn chiều dài.

Bạn sẽ phải kiểm tra như thế này: (i < QuerySplit.length -1)

9

i của bạn là luôn nhỏ hơn hơn QuerySplit.length - đó là điều kiện vòng lặp của bạn. Trong phiên cuối cùng nó sẽ có một giá trị của QuerySplit.length-1, đó là những gì bạn có thể kiểm tra chống lại:

if (i < QuerySplit.length - 1) 

Btw, bạn sẽ làm tốt hơn để sử dụng join Array method cho những gì bạn đang cố gắng để làm:

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

có cách nào để thêm tín dụng một phần không? – Neil

+0

@Neil: Nếu bạn không chấp nhận câu trả lời, bạn vẫn có thể [upvote it] (http://stackoverflow.com/privileges/vote-up) hoặc [thưởng cho tôi một tiền thưởng] (http://stackoverflow.com/help/bounty) (đó là quá nhiều tín dụng, mặc dù :-) – Bergi

Các vấn đề liên quan