2015-07-14 13 views
42

Làm cách nào để chuyển sang vòng lặp tiếp theo của vòng lặp Javascript Array.forEach()?Chuyển đến "lặp lại" tiếp theo trong javascript forEach vòng lặp

Ví dụ:

var myArr = [1,2,3,4]; 

myArr.forEach(function(elem){ 
    if (elem === 3) { 
    // Go to "next" iteration. Or "continue" to next iteration... 
    } 

    console.log(elem); 
}); 

Tôi thực sự ngạc nhiên khi đây không phải là một câu hỏi đã - SO tìm kiếm được chuyển lên gì cả, cùng với câu trả lời gợi ý. MDN docs chỉ đề cập đến việc thoát khỏi vòng lặp hoàn toàn, không chuyển sang lần lặp tiếp theo.

+1

Không sử dụng tìm kiếm SO. Sử dụng google, thay vào đó. Đây là kết quả tìm kiếm đầu tiên cho _ "javascript foreach skip iteration" _ – Cerbrus

Trả lời

87

Bạn có thể chỉ cần return nếu bạn muốn bỏ qua lần lặp hiện tại.

Vì bạn đang ở trong một hàm, nếu bạn return trước khi thực hiện bất kỳ điều gì khác, thì bạn đã bỏ qua việc thực thi mã bên dưới câu lệnh return một cách hiệu quả.

+2

Đẹp hack. Tôi cũng sẽ chọn tuyến đường này. Một số người (đặc biệt là người mới bắt đầu) có thể hiểu lầm nó như là một tiêu chí dừng lại, anyway. –

+17

Trong thực tế, nó thực sự không phải là một hack. Nó chỉ là cách nó phải làm việc. – Cerbrus

19

JavaScript forEach hoạt động hơi khác một chút so với cách chúng ta có thể sử dụng từ ngôn ngữ khác cho mỗi vòng lặp. Nếu đọc trên MDN, nó nói rằng một hàm được thực thi cho từng phần tử trong mảng, theo thứ tự tăng dần. Để tiếp tục phần tử tiếp theo, tức là, chạy hàm tiếp theo, bạn có thể đơn giản trả về hàm hiện tại mà không cần phải thực hiện bất kỳ phép tính nào.

Thêm một trở lại và nó sẽ đi đến chạy tiếp theo của vòng lặp:

var myArr = [1,2,3,4]; 
 

 
myArr.forEach(function(elem){ 
 
    if (elem === 3) { 
 
    return; 
 
    } 
 

 
    console.log(elem); 
 
});

Output: 1, 2, 4

1

chỉ trở thành sự thật trong câu lệnh if của bạn

var myArr = [1,2,3,4]; 

myArr.forEach(function(elem){ 
    if (elem === 3) { 

     return true; 

    // Go to "next" iteration. Or "continue" to next iteration... 
    } 

    console.log(elem); 
}); 
+4

Không cần 'true'. Chỉ là 'trở lại; ' – Cerbrus

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