是否有任何方法來檢查數組A是否包含數組B的所有元素?Ruby - 數組A是否包含數組B的所有元素
回答
這應該對你所需要的工作:
(a & b) == b
你可以試試這個
a.sort.uniq == b.sort.uniq
或
(a-b).empty?
如果你的情況,你可以[1,2,2] != [1,2]
:
a.group_by{|i| i} == b.group_by{|i| i}
+1('ab).empty?' – 2011-05-04 22:59:34
只是爲了防止有人在這裏結束:* *這些都是錯誤的**。正確的答案是'(b-a).empty?',而不是相反。其他人則完全錯誤。另見http://stackoverflow.com/questions/7387937/ruby-rails-how-to-determine-if-one-array-contains-all-elements-of-another-array – oseiskar 2014-05-19 13:05:31
@oseiskar不,他們沒有錯。這取決於任務。 – fl00r 2014-05-19 15:26:39
還有Set類(標準庫的一部分),它可以讓你檢查B是否是A的一個子集。
>> a = [1,2,3,4,5] => [1, 2, 3, 4, 5]
>> b = [3,4,5] => [3, 4, 5]
>> require 'set' => true
>> set_a = a.to_set => #<Set: {1, 2, 3, 4, 5}>
>> set_b = b.to_set => #<Set: {3, 4, 5}>
>> set_b.subset? set_a => true
您可能希望在Ruby標準庫簽出Set類。 proper_subset?
方法可能會做你想做的。
你可以使用Ruby的Set
類:
>> require 'set' #=> true
>> a = [*1..5] #=> [1, 2, 3, 4, 5]
>> b = [*1..3] #=> [1, 2, 3]
>> a.to_set.superset? b.to_set #=> true
對於小數組我通常做的一樣什麼fl00r建議:
>> (b-a).empty? #=> true
最簡單的方法是這樣的:
(b-a).empty?
- 1. 檢查數組是否包含其他數組的所有元素?
- 2. 鑑於袋A和B,刪除A中包含的所有元組B
- 3. 如何從數組B中刪除數組A中的所有元素?
- 4. 有效的方法來找到是什麼數組A的元素數組b
- 5. C++檢查向量a是否包含向量b的元素
- 6. jq:只選擇一個包含元素A但不包含元素B的數組
- 7. 確定是否所有元素的數組是素數
- 8. PostgreSQL如何返回元組{a,b}但不是元組{b,a}?
- 9. 在另一個數組元素中包含數組元素值?
- 10. 數組是否包含?
- 11. 字典數組包含所有數組元素的相同字典引用
- 12. 如何查看Java中的數組是否包含另一個數組的所有元素?
- 13. python:檢查numpy數組是否包含另一個數組的任何元素
- 14. 檢查多維數組中的每個子數組是否包含元素
- 15. 找到一個包含數組所有元素的條目
- 16. 更改所有包含特定字符串的數組元素
- 17. 拉力賽 - 數組不包含所有推送的元素
- 18. 檢查字符串是否包含數組中的元素
- 19. Swift中的數組如何知道它是否包含元素?
- 20. 如何從包含另一個數組的所有元素的數組中獲得所有可能的組合
- 21. 檢查一個數組中的所有元素是否都包含在另一個數組中
- 22. 確定一個數組是否經常包含另一個數組的所有元素?
- 23. C#數組[a,b,c]與數組[a] [b] [c]?
- 24. rubymonk「數組中的所有元素都是Fixnum」?
- 25. 檢查一個數組中的每個元素是否包含在另一個數組的一組值中
- 26. 如何在mongodb中將所有數組元素從位置a增加到b?
- 27. 如何測試數組是否至少包含一個元素
- 28. 如何查找對象數組是否包含元素?
- 29. VueJS2:如何檢查數組是否包含特定元素?
- 30. 檢查Numpy數組中是否包含單個元素
顯示要比較的數組的示例。你的意思是數組A可以包含相同元素的元素數量相同,或者只包含相同的元素和不同的數量 – fl00r 2011-05-04 22:55:55
你關心重複嗎?例如,設a [1,2,3,4]和b爲[1,1,2]。回報值應該是多少? – Serabe 2011-05-05 07:33:10