Tôi đang cố gắng tạo hàm _.combinations
(dấu gạch dưới pha trộn) có ba tham số arr, pockets, duplicates
. Đây là một bài kiểm tra mà tôi đã thiết kế để chỉ ra hành vi nên như thế nào.Chức năng trả về mảng kết hợp mảng
expect(_.combinations([1, 2], 1, false)).to.be.equal([[1],[2]])
expect(_.combinations([1, 2], 1, true)).to.be.equal([[1],[2]])
expect(_.combinations([1, 2, 3], 2, false)).to.be.equal([[1,2],[1,3],[2,3]])
expect(_.combinations([1, 2, 3], 2, true)).to.be.equal([[1,2],[1,3],[2,3],[2,1],[3,1],[3,2]])
expect(_.combinations([1, 2, 3, 4], 3, false)).to.be.equal([[1,2,3],[1,2,4],[1,3,4],[2,1,4],[2,3,4],[3,4,1]])
expect(_.combinations([1, 2, 3, 4], 3, true)).to.be.equal([[1,2,3],[1,2,4],[1,3,4],[2,1,4],[2,3,1],[2,3,4],[3,1,2],[3,4,1],[3,4,2],[4,1,2],[4,1,3],[4,2,3]])
Tôi đã tự hỏi trước khi tôi đi và tạo chức năng này nếu nó tồn tại trong thư viện. Có lẽ chức năng cụ thể này đã có một cái tên mà tôi không quen thuộc.
Có điều gì đó ngoài kia thực hiện việc này không?
Là điểm khởi đầu, bạn có thể sử dụng chức năng [power set] (https://en.wikipedia.org/wiki/Power_set) (chỉ cần tìm kiếm nó; nhiều người đã viết hàm cho nó) để lấy các kết hợp. Từ đó nó nên được tương đối đơn giản để lọc dựa trên các đối số khác của bạn –