2013-05-27 33 views
8

làm cách nào để tôi lặp qua danh sách từ đầu đến đầu bằng cách sử dụng _.each dưới dấu gạch dưới?làm cách nào để lặp qua danh sách các phần tử từ phần tử cuối cùng đến trước bằng dấu gạch dưới?

lister = ['a', 'c', 'd', 'w', 'e']; 
_.each(_.range(lister.length, 0 ,-1), function (val,i) { 
    console.log(val); 
}, lister); 

số bản in này 5 đến 1 trong bảng điều khiển. Có nên sử dụng _.each của dấu gạch dưới thay cho vòng lặp truyền thống "cho" không?

Trả lời

8

Chỉ cần reverse the array trước khi bạn lặp lại nó?

lister.reverse(); 

Để trả lời _.each() vs for loop bạn câu hỏi, have a look here.

+13

nó sẽ thay đổi mảng, do đó, nó có nhược điểm nghiêm trọng chỉ cần lặp lại theo thứ tự ngược lại – user2846569

7

Dấu gạch dưới không cung cấp cho bạn cách lặp lại trong bộ sưu tập ngược lại, chỉ cần chuyển tiếp. Đảo ngược mảng giải quyết vấn đề nhiều như đảo ngược cách thức các phần tử được đặt trong mảng.

Một giải pháp khả thi để vượt qua ngược lại đang giảm trở lại đồng bằng javascript:

for (var i = arr.length; i-- > 0;) 
0

Tất cả những câu trả lời sẽ biến những mảng mà không phải là những gì anh ấy muốn làm, trừ khi bạn muốn thêm .reverse khác() sau mỗi lần bạn chạy nó.

Nhưng kể từ oyu đang sử dụng loDash bạn có thể dễ dàng tránh điều này bằng cách gói mảng bên trong một bản sao hoặc cloneDeep trong mỗi() gọi

var letterArray = [ 'a', 'b', 'c', 'd', 'e' ]; 
_.each(_.clone(letterArray).reverse(), function(v, i) { 
    console.log(i+1); 
}); 

này sẽ đăng nhập 5, 4, 3, 2, 1 mà không ảnh hưởng đến mảng ban đầu.

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