2012-10-09 52 views
65

Có cách nào khác để tăng vòng lặp for trong Javascript bên cạnh i++++i không? Ví dụ, tôi muốn tăng thêm 3 thay vì một.Có thể tăng/giảm vòng lặp cho nhiều lần không?

for (var i = 0; i < myVar.length; i+3) { 
    //every three 
} 
+4

Cant bạn chỉ cần thay i = i + 3 cho số thứ ba? Hay là chỉ trong Java? – CptJesus

+1

Đúng vậy 'i ++' và '++ i' giống như' i + = 1' nếu được sử dụng trong khai báo vòng lặp for, vì vậy 'i + = 3' sẽ hoạt động. – elclanrs

+1

Vòng lặp 'for' không tăng bất cứ thứ gì. Mã của bạn được sử dụng trong câu lệnh 'for'. Nó hoàn toàn tùy thuộc vào bạn như thế nào/nếu/ở đâu/khi bạn muốn sửa đổi 'i' hoặc bất kỳ biến nào khác cho vấn đề đó. –

Trả lời

144

Sử dụng +=assignment operator:

for (var i = 0; i < myVar.length; i += 3) { 

Về mặt kỹ thuật, bạn có thể đặt bất kỳ biểu hiện bạn muốn trong biểu thức cuối cùng của vòng lặp for, nhưng nó thường được sử dụng để cập nhật các biến điều khiển.

Để biết thêm thông tin về từng bước của vòng lặp for, check out the MDN article.

+0

Cảm ơn các chi tiết - Tôi đã khá chắc chắn có một cách để đưa các biểu thức nâng cao hơn vào khe thứ ba - tôi vừa quên rằng nó cần xác định biến, vì vậy rõ ràng 'i + 3' không hoạt động. – brentonstrine

+0

@brentonstrine: Không có vấn đề gì, vui vì tôi có thể giúp –

7
for (var i = 0; i < 10; i=i+2) { 
     // code here 
    }​ 
+0

hoặc 'cho (var i = 0; i <10; i + = 2)', vì 'i = i + 2' bằng 'i + = 2' – arximughal

7

Một for loop:

for(INIT; TEST; ADVANCE) { 
    BODY 
} 

có nghĩa như sau:

INIT; 
while (true) { 
    if (!TEST) 
     break; 
    BODY; 
    ADVANCE; 
} 

Bạn có thể viết hầu như bất kỳ biểu hiện cho INIT, TEST, ADVANCE, và BODY.

Đừng lưu ý ++ nhà khai thác và các biến thể là nhà khai thác với tác dụng phụ (ta nên cố gắng tránh chúng nếu bạn không sử dụng chúng như i+=1 và những thứ tương tự):

  • ++i nghĩa i+=1; return i
  • i++ nghĩa oldI=i; i+=1; return oldI

Ví dụ:

> i=0 
> [i++, i, ++i, i, i--, i, --i, i] 
[0, 1, 2, 2, 2, 1, 0, 0] 
5

Câu trả lời của Andrew Whitaker là đúng, nhưng bạn có thể sử dụng bất kỳ biểu thức nào cho bất kỳ phần nào.
Chỉ cần nhớ biểu thức thứ hai (giữa) nên đánh giá để nó có thể được so sánh với boolean true hoặc false.

Khi tôi sử dụng một for loop, tôi nghĩ về nó như

for (var i = 0; i < 10; ++i) { 
    /* expression */ 
} 

như là

var i = 0; 
while(i < 10) { 
    /* expression */ 
    ++i; 
} 
1

Bạn chắc chắn có thể. Những người khác đã chỉ ra chính xác rằng bạn cần phải làm i += 3. Bạn không thể làm những gì bạn đã đăng vì tất cả những gì bạn đang làm ở đây là thêm i + 3 nhưng không bao giờ gán kết quả trở lại i. i++ chỉ là viết tắt của i = i + 1, tương tự i +=3 là viết tắt của i = i + 3.

0
for (var i = 0; i < myVar.length; i+=3) { 
    //every three 
} 

thêm

Operator Example Same As 
    ++  X ++  x = x + 1 
    --  X --  x = x - 1 
    +=  x += y  x = x + y 
    -=  x -= y  x = x - y 
    *=  x *= y  x = x * y 
    /=  x /= y  x = x/y 
    %=  x %= y  x = x % y 
Các vấn đề liên quan