【问题标题】:Ruby: Compare if array contains other array [duplicate]Ruby:比较数组是否包含其他数组[重复]
【发布时间】:2019-01-16 21:49:28
【问题描述】:

如何比较一个字符串数组是否包含 Ruby 中较小的字符串数组?

例如

a=["1","2","3","4","5"]
b=["2","3"]

现在我想检查 a 是否包含 b 并得到真/假

谢谢。

【问题讨论】:

  • 你可以通过(a & b) == b查看,它会返回布尔值true / false
  • @GaganGami 不,这是不正确的; & 挤压重复导致奇怪的[1, 1] & [1, 1] == [1, 1] #⇒ false 因为令人惊讶的是[1, 1] & [1, 1] == [1]
  • @mudasobwa : 注意到,谢谢

标签: arrays ruby string include compare


【解决方案1】:

最常见的方法是

(b - a).empty?

不过,它在独特元素方面存在问题。要检测a 是否包含来自b所有 元素,应该:

a_copy = a.dup
b.all? { |e| a_copy.delete e }
# or
b.all?(&a_copy.method(:delete))

【讨论】:

  • 谢谢,我用b.all? { |x| a.include(x) }解决了
  • @EnginTopuzoglu 再次提醒,如果数组可能包含重复项,它将无法工作。
  • 我明白了,谢谢,它们不包含重复项,但它们可能包含重复项,所以我将其更改为您的代码,仍然有效
猜你喜欢
  • 2018-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-20
  • 2018-11-16
  • 1970-01-01
  • 2021-11-01
  • 1970-01-01
相关资源
最近更新 更多