Các mảng kinh điển khác biệt ví dụ trong Ruby là:của Ruby mảng trừ mà không cần tháo mặt hàng nhiều hơn một lần
[ 1, 1, 2, 2, 3, 3, 4, 5 ] - [ 1, 2, 4 ] #=> [ 3, 3, 5 ]
cách tốt nhất để có được những hành vi sau đây thay vì là gì?
[ 1, 1, 2, 2, 3, 3, 4, 5 ].subtract_once([ 1, 2, 4 ]) #=> [ 1, 2, 3, 3, 5 ]
Tức là, chỉ trường hợp đầu tiên của từng mục phù hợp trong mảng thứ hai được loại bỏ khỏi mảng đầu tiên.
Tôi sẽ chấp nhận điều này nhưng sẽ tốt nếu đối số có thể chứa các giá trị trùng lặp được áp dụng lần lượt (chúng bị đè bẹp bởi chuyển đổi thành Đặt). Không chắc chắn làm thế nào bạn có thể giữ các bản sao trong khi vẫn giữ hiệu suất. (Ngoài ra tôi muốn chấp nhận một mảng và không phải là giá trị như các đối số riêng biệt, nhưng đó là một thay đổi dễ dàng) –
Tôi đã cập nhật câu trả lời bằng phiên bản áp dụng nhiều lần như chúng hiện diện trong mảng khác. – glebm
@glebm người đàn ông giải pháp xuất sắc! Điều này thực sự đã giúp tôi rất nhiều. Bạn đã viết này chỉ để trả lời câu hỏi SO này? Cảm ơn nhiều. –