для двух массивов А и В: А и В имеют такое же содержание, если: (A-B).blank? and (B-A).blank?
или вы можете просто проверить: ((A-B) + (B-A)).blank?
Также, как предложено @ cort3z, это решение als0 работает для полиморфных массивов, то есть
A = [1 , "string", [1,2,3]]
B = [[1,2,3] , "string", 1]
(A-B).blank? and (B-A).blank? => true
# while A.uniq.sort == B.uniq.sort will throw error `ArgumentError: comparison of Fixnum with String failed`
::::::::::: EDIT :::::::::::::
Как указывается в комментариях, выше решение не выполняется для duplicates.Although согласно вопрос, который даже не требуется, так как искатель не заинтересован в дубликатах (он преобразует свои массивы для установки перед проверкой, и это маскирует дубликаты, и даже если вы посмотрите на accepeted ответ, он использует оператор .uniq перед проверкой и это слишком маскирует дубликаты.). Но все же, если вас интересуют дубликаты, просто добавление проверки количества будет исправлять то же самое (по одному вопросу только один массив может содержать дубликаты). Таким образом, окончательное решение будет: A.size == B.size and ((A-B) + (B-A)).blank?
возможно дубликат [Рубин - Есть ли массив А содержат все элементы массива B] (Http: // StackOverflow.com/questions/5890717/ruby-do-array-a-contains-all-elements-of-array-b) – fl00r
Попробуйте array.should = ~ another_array проверить http://stackoverflow.com/questions/2978922/rspec-array-should-another-array-but-without-concern-for-order – Athena
Вы могли бы сэкономить много путаницы: 1) указать, являются ли элементы массивов обязательными для сортировки; и 2) дать простой пример, чтобы прояснить, что вы подразумеваете под этим термином: «имеют ли два массива одни и те же элементы» (например, '' [1,2] 'и' [2,1,1] 'имеют одинаковые элементы?) –