Tôi đang cố gắng để có được một kết quả tìm kiếm một cái gì đó như thế này: Miniors | Boys | 54kg - 62kg
nơi mà mọi giá trị được giới hạn bởi một đường ống | xuất phát từ một mảng chứa "loại hạn chế" nhất định. Ví dụ: ageGroups, genders, weightClasses
(như đã xem ở trên).Dynamic lồng nhau cho các vòng được giải quyết với đệ quy
Cách tôi có thể nhận được kết quả này ngay bây giờ là nếu tôi mã cứng lồng nhau cho các vòng lặp (sử dụng dấu gạch dưới), nhưng điều này có nghĩa là bây giờ tôi phải lặp lại bao nhiêu mảng để có được kết quả mong muốn . Điều này hoạt động "tốt":
var categories = [];
_.each(ageGroups, function(ageGroup) {
_.each(gender, function(gender) {
_.each(weightClasses, function(weightClass) {
categories.push(ageGroup.name + ' | ' + gender.name + ' | ' + weightClass.name);
});
});
});
Đầu ra là một mảng (danh mục) với tất cả các kết hợp có thể của mảng giới hạn.
Bây giờ, vấn đề của tôi là tôi cần một cách để làm tương tự với một số lượng các mảng hạn chế không xác định. đoán của tôi cho một giải pháp thích hợp là đệ quy, NHƯNG tôi đã không thể sản xuất bất cứ điều gì thực sự hoạt động kể từ khi tôi không thể quấn quanh đầu tôi đệ quy chỉ được nêu ra :)
Một fiddle chuẩn bị với một số dữ liệu thử nghiệm có thể tìm thấy tại đây: jsFiddle. Fiddle sử dụng góc cho một số dữ liệu đơn giản và gỡ lỗi kết quả đầu ra và underscorejs để xử lý các mảng.
Cố gắng không để sử dụng các hiệu ứng phụ (tức là 'push'ing thành mảng' categories' toàn cục), nhưng thay vào đó 'return' từ mỗi bước và sử dụng' map' (và 'flatten') – Bergi
Hmm .. Okey. Flatten sẽ không được sử dụng ở đây vì tôi cần một sự kết hợp của các giá trị khác nhau từ các mảng khác nhau. Nhưng bản đồ có thể là một cái gì đó .. Mặc dù tôi không thể nhìn thấy nó sẽ giải quyết vấn đề tôi đang phải đối mặt với một số lượng năng động của mảng. Bạn quan tâm để xây dựng? – aup
Hãy thử sử dụng 'map' (ngay cả trong một cách không chung chung) và bạn sẽ thấy những gì bạn cần' flatten' cho. Sau đó, tạo một hàm nhận 'nhóm', chỉ mục của nhóm hiện tại (" cấp độ làm tổ ") và tên hiện tại của các nhóm đã truy cập. Trường hợp cơ sở (khi mức độ làm tổ đã đạt đến độ dài của 'nhóm') sau đó sẽ trả về các tên hiện tại đó (tham gia bởi' | '), trường hợp đệ quy - bạn sẽ tìm ra. – Bergi